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和访问规则
网友评论