#define ABC 1.234

    ABC也许从未被编译器看见,也许在编译器处理源码之前就被预处理器移走,ABC有可能没有进去记号表(symbol table)内。

    #define不仅不能用来定义class专属常量,也不能提供任何封装性。

    当在编译期间需要一个class常量值,例如确定数组的大小,可以使用enum。

    对一个const取地址是合法的,但是对enum和#define取地址是不合法的。

    enum和#define一样不会导致非必要的内存分配。

    对于形似函数的宏,最好改用inline函数替换#define,可以获得宏带来的效率以及一般函数的所有可预料行为和类型安全性。

   

   

Posted on 2011-11-27 10:54  SomethingReview  阅读(81)  评论(0编辑  收藏  举报