effective c++的第02个条款
1.尽可能的用const、enum、inline替代#define 或者说“宁可用编译器处理也不会让预处理器处理好”。
用
const double AspectRatio = 1.653 替代 #define ASPECT_RATIO 1.653
理由:AspectRatio是编译器实实在在看到的变量,编译时如果有误操作能够通过编译提示快速定位。
2.定义指针常量时应该
const char* const name = “cxue”
3.在类中定义常量时
class A { private: static const int Number = 100; ..... }
理由:首先我们使用const声明来确定它是一个不可以改变的常量,其次我们用static来确定这个变量只实例化一次。值得注意的是#define不能创建一个class专属常量。
但是旧的编译器一般不支持上述语法,我们可以这样写
在头文件内 class A { private: static const int Number; .... } 在实现文件内 const int A::Number = 5;
4.the enum hack法则
一般常量可以这样写
class A { private: enum{ number = 5}; ... }
理由:1)enum hack更像#define 我们容易理解,2)取一个const的地址是合法的,而取一个enum的地址是不合法的。