在C++中,常量是指其值无法被程序修改的标识符或数值。C++中有多种方式来定义常量,本文介绍以下常量定义方式:字面常量、const修饰符和宏常量。
1.4.1 字面常量
- 整型常量:可以用十进制、十六进制或八进制表示,例如
42
,0x2A
,052
。 - 浮点数常量:包括普通的浮点数表示,例如
3.14;
还有指数形式,例如6.02e23
。 - 字符常量:用单引号括起来的单个字符,例如
`a`
。 - 字符串常量:由双引号括起来的一串字符,例如
"Hello, World!"
。
1.4.2 宏常量
宏常量通常使用 #define 预处理指令来定义,它在编译之前进行文本替换。
定义一个宏常量示例如下:
#define PI 3.14159
-
优点:
- 由于是简单的文本替换,因此可以用于各种值,包括函数、表达式等。
- 不占用内存,没有类型限制。
-
缺点:
- 可能会引发意外的错误,因为它只是简单地进行文本替换,可能存在副作用。
- 不受作用域控制,无法限定宏的可见范围。
1.4.3 const 关键字
const关键字用于创建用于表示不可变数据的变量。其定义如下:
const double PI = 3.14159;
-
优点:
- 类型安全:const关键字定义的常量具有明确定义的类型,不会出现一些通过宏定义带来的类型错误。
- 受作用域控制:常量遵循其定义所属的作用域,可以有效限制常量的可见范围。
-
缺点:
- 对于较大的结构或类对象而言,可能会产生额外的开销,因为需要在内存中保存其值。
建议
- 在C++中,建议优先使用const关键字创建常量,以获得更多类型检查的益处,并将常量的作用域限定在所需范围内。
- 宏常量更适合于一些特殊情况,比如在头文件中定义常量或者创建复杂的文本替换操作。