Effective C++笔记(一)
条款1:视C++为语言联邦
C、面向对象C++、模板部分、STL
条款2:尽量用const、enum、inline替换#define
1.#define创建常量:1.会进入符号表,不利于调试。2.没有作用域概念,不能被封装,使用不方便。
2.使用enum hack完成in class初值设定。
3.#define创建宏函数会引发很多难以察觉的问题。使用inline template函数代替。
有了const、enum和inline,对#define的需求降低了。
条款3:尽可能使用const
1.如果想修改一个const对象的某个成员变量,可以把该变量声明为mutable。
2.const成员函数和non-const成员函数的实现基本一致,仅返回值类型不同。可以使用常量转型,避免重复。
第一次将this加上const属性,第二次移除const成员函数返回值的const属性。
条款4:对象使用前初始化
1.内置型对象手工初始化,类类型对象由构造函数负责初始化。
2.尽可能使用成员初始化列表初始化成员变量,排列次序和声明保持一致。
3.避免跨编译单元的初始化次序问题,使用单例模式。