Effective C++学习笔记 chapter 1

const常量vs 宏定义

1.尽量使用常量const替换#define

2.为了将常量的作用域限制在类内,可以定义类的专属常量,而#define不能用来定义类的专属常量,无法提供任何封装性

3.enum hack技术

4.对应形似函数的宏,最好改用inline函数替换#define

 

赋值vs初始化

1. 类的对象(不是内置类型)的初始化早与该类构造函数被调用的时间

成员列表肤初值:如果成员变量是const或者reference,它们就一定需要初值,不能被赋值

条款:

C++成员初始化次序:基类更早于派生类,类的成员变量总是以其声明次序被初始化

C++对于不同编译单元内的non-local static对象的初始化相对次序并无明确的定义,解决方式是使用设计模式中的Singleton模式进行解决(局部静态对象来解决)

任何一个non-const static对象,不论是local还是non-local,在多线程环境下"等待某事发生"都会有麻烦

posted @ 2016-04-21 14:15  Shirley_ICT  阅读(116)  评论(0编辑  收藏  举报