2015年9月22日

寻找hash值——把int array看成是一个整数

摘要: QUESTION:Write a class DominoChecker that has a method called addBox(int[]) that takes a box of five dominoes, described as a list of 10 integers (exp... 阅读全文

posted @ 2015-09-22 20:29 joannae 阅读(474) 评论(0) 推荐(0) 编辑

C++ STL(Standard Template Library)

摘要: 为什么要使用STL 数据结构的分离(如vector)和算法的分离(如,STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组)。 STL其实是一种泛型编程(Generic Programming,简写GP)是一种基于参数化(parameterization)的编 阅读全文

posted @ 2015-09-22 06:46 joannae 阅读(308) 评论(0) 推荐(0) 编辑

C++:初始化列表

摘要: 有两种原因需要使用初始化列表: 让我们先看一下第一个原因——必要性。(1)对另一个类成员的初始化,(2)成员是一个常量对象,(3)成员是引用。根本原因:编译器总是确保所有成员对象在构造函数体执行之前(初始化列表之后)被初始化。 变量的初始化顺序就应该是: 1 基类的静态变量或全局变量 2 派生类的静 阅读全文

posted @ 2015-09-22 06:42 joannae 阅读(193) 评论(0) 推荐(0) 编辑

虚函数原理

摘要: 虚函数表的数量与位置:编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。编译器将虚函数表存放在了目标文件或者可执行文件的常量段,即代码区。 虚函数表指针(vptr)的数量与位置:如果1个类中存在一个虚函数,那么第一个地址永远都是指向虚函数列表的指针。子类没有vptr,子类 阅读全文

posted @ 2015-09-22 06:40 joannae 阅读(298) 评论(0) 推荐(0) 编辑

placement new

摘要: placement new就是把原本new做的两步工作分开来。第一步你自己分配内存,第二步你调用类的构造函数在自己分配的内存上构建新的对象。class Foo{ float f;public: void set_f( float _f ) { f = _f; } void get... 阅读全文

posted @ 2015-09-22 06:29 joannae 阅读(173) 评论(0) 推荐(0) 编辑

overloading与overriding的区别

摘要: overloading: “重载”,参数和返回值可改变。overriding: “覆盖”,重写父类的虚函数,参数和返回值必须与父类相同。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。 阅读全文

posted @ 2015-09-22 06:25 joannae 阅读(712) 评论(0) 推荐(0) 编辑

C++ 基类指针,子类指针,多态

摘要: 基类指针和子类指针之间相互赋值(1)将子类指针赋值给基类指针时,不需要进行强制类型转换,C++编译器将自动进行类型转换。因为子类对象也是一个基类对象。(2)将基类指针赋值给子类指针时,需要进行强制类型转换,C++编译器将不自动进行类型转换。因为基类对象不是一个子类对象。子类对象的自增部分是基类不具有... 阅读全文

posted @ 2015-09-22 06:24 joannae 阅读(4427) 评论(0) 推荐(0) 编辑

导航