1. Widget w3 = w2; //调用copy构造函数;
w3 = w2; //调用copy assignment函数;
值传递函数的参数是调用copy构造函数。
2. 视C++为一个语言联邦
C,Object-Oriented C++,Template C++, STL。
3. 对于单纯的常量,最好以const对象或enums替换#define;
对于形似函数的宏,最好改用inline函数替换#define。
4. const:
<span style="font-size:18px;"><span style="font-size:18px;">int a = 5;
int* const p = &a;
(*p) ++; //ok, 指针p不能指向其它的地址,但是值可以改变
//p ++; //error
const int *pp = &a;
//(*pp) ++; //error,指针pp值不能改变,但是可以指向其它地址
pp ++; //ok</span></span>
mutable(可变的): 可以释放掉non-static成员变量的bitwise constness。
5. 初始化:
i. 为内置型对象进行手工初始化,因为C++不保证初始化它们;
ii. 构造函数最好使用成员初始列,而不要在构造函数本体内使用赋值操作。初始列列出的成员变量,其排列次序应该和它们在class中的声明次序相同。
iii. 为免除“跨编译单元之初始化次序”问题,用local static对象替换non-local static 对象。