[C++]尽量以const,enum,inline替换#define
2007-10-30 16:27
357 查看
尽量以const,enum,inline替换#define
-----MoaKap学习笔记
l 对于单纯常量,最好以const对象或enum替换#define
#define MAX 100
当使用#define定义一个常量时,由于常量MAX在进入编译器前已经被替换成#define定义的数值100,这样MAX本身便没有进入记号表。当程序在MAX附近出错时,编译器的错误信息就会是关于100的错误。如果其它人来阅读这个信息,将会完全不知道100从何而来。原因就是MAX并没有进入编译器的记号表。
使用常量替换#define
Const int Max = 100;
这样,作为一个常量,Max肯定会进入编译器的记号表,就不会出现像“100有错误“类型的错误信息了。
同时,使用const常量还可以避免目标码的多份复制。在程序中,仅有一个内存来存放常量。
注:
1、 关于指针常量
因为常量通常被放在头文件中,因此有必要将指针声明为const(而不只是指针所指的对象),因此必须写为:
Const char * const User_Name = “Demo”;
Const指针:如果const出现在*左边,表示被指物为常量;如果出现在*右边,表示指针自身是常量;如果出现在*两边,表示指针和被指物都是常量。
如果被指物是常量,也可以将const写在类型之后、*之前。以下两种写法是等价的:
Void f1(const char * pw);
Void f2(char const * pw);
2、 const修饰函数返回值
令函数返回一个常量值,可以降低因用户错误操作造成的意外,而又不至于放弃安全性和高效性。
例如:
定义函数Const int func();
这样,当用户出现如 if( func() = a) 的判断时,程序就会报错。
l 对于形似函数的宏,最好改用inline函数替换#define
*——Effective C++
-----MoaKap学习笔记
l 对于单纯常量,最好以const对象或enum替换#define
#define MAX 100
当使用#define定义一个常量时,由于常量MAX在进入编译器前已经被替换成#define定义的数值100,这样MAX本身便没有进入记号表。当程序在MAX附近出错时,编译器的错误信息就会是关于100的错误。如果其它人来阅读这个信息,将会完全不知道100从何而来。原因就是MAX并没有进入编译器的记号表。
使用常量替换#define
Const int Max = 100;
这样,作为一个常量,Max肯定会进入编译器的记号表,就不会出现像“100有错误“类型的错误信息了。
同时,使用const常量还可以避免目标码的多份复制。在程序中,仅有一个内存来存放常量。
注:
1、 关于指针常量
因为常量通常被放在头文件中,因此有必要将指针声明为const(而不只是指针所指的对象),因此必须写为:
Const char * const User_Name = “Demo”;
Const指针:如果const出现在*左边,表示被指物为常量;如果出现在*右边,表示指针自身是常量;如果出现在*两边,表示指针和被指物都是常量。
如果被指物是常量,也可以将const写在类型之后、*之前。以下两种写法是等价的:
Void f1(const char * pw);
Void f2(char const * pw);
2、 const修饰函数返回值
令函数返回一个常量值,可以降低因用户错误操作造成的意外,而又不至于放弃安全性和高效性。
例如:
定义函数Const int func();
这样,当用户出现如 if( func() = a) 的判断时,程序就会报错。
l 对于形似函数的宏,最好改用inline函数替换#define
*——Effective C++
相关文章推荐
- [effectiv c++]条款2:尽量以const,enum,inline替换#define(static,const定义式)
- 改善C++ 程序的150个建议学习之建议25:尽量用const、enum、inline替换#define
- 【C++】尽量以const,enum,inline 替换 #define
- C++ 笔记(一) —— 尽量以 const、enum、inline 替换 #define
- 读书笔记_Effective_C++_条款二:尽量以const, enum, inline替换#define
- effetive C++ 02 尽量以const,enum,inline替换#define
- c++ 尽量不要使用#define 而是用const、enum、inline替换。
- Effective C++ Item 2 尽量以const, enum, inline 替换 #define
- Effective C++ Item 02-尽量以const、enum、inline替换#define
- <Effective C++>条款02:尽量以const,enum,inline替换#define
- C++ 笔记(一) —— 尽量以 const、enum、inline 替换 #define
- 条款2:尽量以const,enum,inline替换#define
- 【寒江雪】尽量以const,enum,inline替换#define
- Item 2:尽量以const,enum,inline替换#define【effective C++读书笔记】
- 条款02:尽量以const,enum,inline替换#define
- Effective C++阅读笔记_条款2:尽量以const,enum,inline替换#define
- 重读经典-《Effective C++》Item2:尽量以const,enum,inline替换#define
- 条款2:尽量以const, enum, inline 替换#define
- 条款2:尽量以const、enum、inline替换#define
- 条款02:尽量以const,enum,inline替换#define