Effective C++ Term 2 用const,enum,inline替换 #define

define用于常量的缺点

通过#define定义的变量不进入symbol table,无法调试

替代方式:

const char* const author_name = "Mayers";
// Better
const std::string author_name("Mayers");

将常量作用域限制于class内

为类内的常量提供封装:

class MyClass {
  private:
    static const int num;
};
const int MyClass::num = 5;

enum hack

一个enum类型的数值可以充当int使用:

class MyClass {
  private:
    enum {len = 5};
    int scores[len]
};

enum的特性:不可以取址,是模板元编程的基础技术

用inline函数代替宏

可以在class内编写一个private inline函数,因为inline是一个真正的函数,遵守scope和访问规则

你可能感兴趣的:(Effective C++ Term 2 用const,enum,inline替换 #define)