effective C++(第三版)读书笔记一——条款二:尽量以const,enum,inline替换#define
时间:2011-05-24 来源:萧牧
书中“宁可以编译器替换预处理”算是另一种提法,不过这个应该是概括性的说法吧
主要事项注意如下:
1用const double AspectRatio=1.653;代替#define ASPECT_RATIO 1.653
原因是预编译时define会被简单的替换,这样在编译时丢掉了ASPECT_RATIO,如果不正
当使用了ASPECT_RATIO编译时提示出错的可能只是1.653,这时候查找起来麻烦多了
另一个原因是定义成变量后编译时只有一份拷贝,节约了代码
当然这个条款也有特例
1)当出现指针的时候要这样const char* const autherName = "Scott Mayers";
即指针和其内容都不可变,当然如果是字符串string会比上面的char更合适
const std::string autherName("Scott Mayers");
2)注意class的专属常量,通过使得常量成为class的一个member将常量作用域限制在class内
通过使用static使常量只有一份拷贝
class GamePlayer(){
private:
static const int NumTurns = 5;
int scores[NumerTurns];
……
};
今天困了不早了,明日再写
相关阅读 更多 +