条款1、视C++为一个语言联邦(C,Object-Oriented C++,Template C++,STL)
条款2、尽量以const,enum,inline替换#define
1)对于单纯常量,最好以const对象或enums替换#define
2)对于形式似函数的宏(macros),最好改用inline函数替换#define
条款3、尽可能使用const
1)cosnt出现在*左边,表示被指是常量,如果出现在*号的右边,表示指针自身是常量。如果出现在*的两边,表示被指物和指针都是常量
2)将某些东西声明为const可帮助编译器侦测出错用法。const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。
3)编译器强制实现bitwise constness,但你编写程序时应该使用“概念上的常量性”
4)当const和non-const成员航盛有着实质等价的实现时,令non-const版本调用const版本可以避免代码重复。
条款4、确定对象被使用前已先被初始化
1)为内置型对象进行手工初始化,因为C++不保证初始化它们
2)构造函数最好使用成员初值列,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排列次序应该和它们在class中的声明次序相同
3)为免除“夸编译单元之初始化次序”问题,请以local对象替换non-local static 对象。
条款2、尽量以const,enum,inline替换#define
1)对于单纯常量,最好以const对象或enums替换#define
2)对于形式似函数的宏(macros),最好改用inline函数替换#define
条款3、尽可能使用const
1)cosnt出现在*左边,表示被指是常量,如果出现在*号的右边,表示指针自身是常量。如果出现在*的两边,表示被指物和指针都是常量
2)将某些东西声明为const可帮助编译器侦测出错用法。const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。
3)编译器强制实现bitwise constness,但你编写程序时应该使用“概念上的常量性”
4)当const和non-const成员航盛有着实质等价的实现时,令non-const版本调用const版本可以避免代码重复。
条款4、确定对象被使用前已先被初始化
1)为内置型对象进行手工初始化,因为C++不保证初始化它们
2)构造函数最好使用成员初值列,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排列次序应该和它们在class中的声明次序相同
3)为免除“夸编译单元之初始化次序”问题,请以local对象替换non-local static 对象。