条款02:尽可能使用const, enum, inline替代define

原创 2012年03月23日 12:57:21

(1)#define ASPEC_RATIO 1.653

替代为: constdouble AspectRatio = 1.653;

因为define名称ASPEC_RATIO也许从未被编译器看见,那么她就没有进入记号表,那么在获取错误信息的时候,就可能浪费时间去获得1.653的意思。

关于class的专属常量,为了将常量的作用域限制于class内,你必须让它成为一个成员,而为了确保此常量至多只有一根实体,你必须让他成为一个static成员,

classGamePlayer {

private:

         static const int NumTurns = 5;         //常量声明式

         int scores[NumTurns];

         …

};

然而你所看到的是NumTurns的声明式,而不是定义式,通常C++要求你对你所使用的任何东西提供一个定义式,但是如果它是一个class专属常量又是static且为整数类型,则需要特殊处理。定义式如下

const intGamePlayer::NumTurns;  //NumTurns的定义

 请把这个式子放在一个实现文件而不是头文件中,由于class常量已在声明时候获得初期,因此定义的时候不可以在设置初值。

         也可以使用枚举类型

         classGamplayer {

         private:

                   enum{ NumTurns = 5; };

                   intscores[NumTurns];

                   …

         };

 

(2)template<typename T>

          inline void CallWithMax(const T&a, constT&b)

          {

                   if(a> b? a : b);

    }

(3)对于单纯常量,最好以const对象或enums替换#define

          对于类似函数的宏,最哈改用inline函数替换#define

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《Effective C++》条款02:尽量以const,enum,inline替换#define

1. 宏定义   #define ASPECT_RATIO 1.653 该宏定义ASPECT_RATIO也许从未被编译器看见,也许在编译器开始处理源代码之前就被预处理器替换了。我们知...

条款02:尽量以const、enum、inline替换#define

少用#define!!

《Effective C++》学习笔记条款02 尽量以const,enum,inline替换#define

尽量以const,enum,inline替换#define

Effective C++--条款02:尽量以const,enum,inline替换#define(以编译器替换预处理器)

此条款也可以改为:“宁可以编译器替换预处理器”。 假设有一个宏: #define ASPECT_RATIO 1.653当我们运用这个常量但获得一个编译错误信息时,错误信息可能会提到1.653而不是A...

条款2:尽量以const,enum,inline 替换 #define

条款2:尽量以const,enum,inline 替换 #define

条款2 尽量用const,enum,inline代替#define

这个条款改为“尽量把工作交给编译器而不是预编译器”更恰当,因为或许#define不被视为语言的一部分,这正是问题所在,如下: #define  DATA  1.6 编译器也许根本就接触不到这个DA...

effective C++(第三版)读书笔记一——条款二:尽量以const,enum,inline替换#define

中“宁可以编译器替换预处理”算是另一种提法,不过这个应该是概括性的说法吧 主要事项注意如下: 1用const double AspectRatio=1.653;代替#define ASPECT_R...

《effective c++》条款二:尽量以enum,const,inline替换#define

/* 以下,是对const,enum,inline的一系列测试 -----《effective c++》条款二 : 尽量以const,...

条款2:尽量以const,enum,inline替换#define

这一条款也被称作:宁可用编译器替换预处理器。从以下几方面说明:(最开始的那一段似乎跟编译原理有关,我是不懂的,就不说了): 对于一般用#defined定义的常量,可以使用const类型代替。 ...

Effective C++ 读书笔记——条款2:尽量以const,enum,inline替换#define

中“宁可以编译器替换预处理”算是另一种提法,不过这个应该是概括性的说法吧 主要事项注意如下: 1用const double AspectRatio=1.653;代替#define ASPECT_R...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:条款02:尽可能使用const, enum, inline替代define
举报原因:
原因补充:

(最多只允许输入30个字)