条款01: 视C++为一个语言联邦:
包含四个部分
C
OOC++ 即C with Classes.
Template C++. 即泛型编程
STL
C++高效编程守则视状况而变化,取决于你使用C++的哪一部分.
条款02: 尽量以 const, enum, inline 替换 #define
即以编译器换预处理.
对于单纯常量,最好以const对象或enums替换#define
对于形似函数的宏,最好用inline函数来替换,必要时应该使用 template
条款03: 尽可能使用 const
将某些东西声明为const可帮助编译器侦测出错误用法. const可被施加于任何作用域内的对象,函数参数,函数返回值,成员函数本体.
在STL中 const_iterator 不可改变他所指向的值,可以改变指针自身.
Const std::vector<int>::iterator 则相反
令函数返回一个常量值,往往可以降低因客户错误而造成的意外.
两个成员函数如果只是常量性不同(即一个有const,一个没有const), 可以被重载.
Mutable关键字可以释放掉non-static 成员变量的const约束
当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复
条款04: 确定对象被使用前已先被初始化
对内置型对象进行手工初始化.
对于内置类型以为的东西,确保每一个构造函数都将对象的每一个成员初始化.并且应该使用初始化列表而不是在构造函数本体内使用赋值操作.
对于多个编译单元的 non-local static 对象,应以 local static 对象替换 non-local static 对象