高质量程序设计指南:C++/C语言
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.3 const与#define的比较

C++语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者具有更多的优点:

(1)const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行静态类型安全检查;而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)。

(2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

【提示5-3】: 所以在C++程序中应尽量使用const来定义符号常量,包括字符串常量。

要注意的是,const不仅仅用于定义符号常量,凡是需要编译器帮助我们预防无意中修改数据的地方,都可以使用const,如const数据成员、const成员函数、const返回类型、const参数等。

【提示5-4】: const是constant的缩写,是“恒定不变”的意思。被const修饰的东西都受到C++/C语言实现的静态类型安全检查机制的强制保护,可以预防意外修改,能提高程序的健壮性。请参考6.13节的论述。