第一章 自己习惯C++
尽量要用 const enum inline 去替换 #define ,也可以定义为 “宁可以编译器替换预处理器”比较好, 因为 #define 不是属于语言的一部分。
对于这个问题 该书 提及到 #define ASPECT_RATIO 1.653 这个 宏定义 当出现问题时 只是会出现1.653 这个错误 而不是ASPECT_RATIO 因为编译预处理将宏替换为它所定义的东西
const char *str="Scott Meyers";
const std::string str("Scott Meyers");
class 专属常量 为了将常量的作用域限制在class 内你必须让它成为class的一个成员 而为了确保此常量只有一份实体应该把这个常量声明为 static 成员
class GamePlayer
{
private:
static const int NUMTURNS;
int scores[NUMTURNS];
....
}
在 CPP文件当中写上
const int GamePlayer::NUMTURNS=5;
如果不想让任何人获取一个指针 或引用e 指向你的某个整数常量 enum可以做到 Enums 和#define相同 不会导致过度的内存分配
对于宏的替换 最好使用模板函数进行替换 比如CALL_WITH_MAX(a,b) ((a)>(b)?(a):(b)
替换为template<typename T> inline void callWithMax(const T &a,const T &b){ f(a>b ? a:b)}