让自己习惯C++
条款01
视C++为一个语言联邦
包含:
- C语言
- C with Class
- Template C++/模板元编程
- STL
条款02
以const,enum,inline替代#define
其中enum用在编译器期需要常量时,即"the enum hacks",原理是枚举可充当int,注意enum无法取地址或引用
inline函数用于替代形似函数的宏(macros)
条款03
尽可能使用const
注意const与指针的位置作用
const可与指针/迭代器/指针对象/迭代器对象/引用对象/函数参数/返回类型/local变量/成员函数合作
当const与non-const成员函数有实质等价实现时,另non-const版本调用const版本可避免重复,期间涉及到转型
思考:
写的每一个函数,都应对参数和输出进行思考,应该换成const吗?应该用引用还是指针还是值?
条款04
确定对象被使用前已先被初始化
核心:对内置型对象要进行手工初始化
注意:构造函数最好使用成员初始阵列,不要在构造函数内使用赋值操作符,原因是后者徒增了一次成员构造函数调用;初值阵列顺序要和声明中的顺序相同.
对于"跨编译单元之初始化次序"问题,应以local static对象替代non-local static对象,参考单例模式的静态局部对象做法.