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,在多线程环境下"等待某事发生"都会有麻烦