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.避免跨编译单元的初始化次序问题,使用单例模式。

posted @ 2017-06-21 14:50  朱科潜  阅读(117)  评论(0编辑  收藏  举报