第五章 常量
const和#define
const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安 全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会 产生意料不到的错误(边际效应)。
#define MAX 100 /* C 语言的宏常量 */
const int MAX = 100; // C++ 语言的 const 常量
const float PI = 3.14159; // C++ 语言的 const 常量
需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。
类中的常量
#define 定义的宏常量是全局的
用const
修饰数据成员来实现某些常量只在类中有效。const
数据成员只在某个对象生存期内是常 量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const
数 据成员的值可以不同。
不能在类声明中初始化const
数据成员,只能在类构造函数的初始化表中进行。
枚举常量enum
枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。是一种由程序员定义的数据类型,其合法值是与它们关联的一组命名整数常量。
enum <数据类型名> {<枚举常量表>};
//关键字enum——指明其后的标识符是一个枚举类型的名字;
enum color {RED, BLUE, WHITE, BLACK}; // 定义枚举类型color,4个枚举变量值依次默认为:0,1,2,3
enum { SIZE1 = 100, SIZE2 = 200}; // 枚举常量
//枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量.
//枚举常量表——由枚举常量构成。"枚举常量"或称"枚举成员",是以标识符形式表示的整型量,表示枚举类型的取值。各枚举常量之间以","间隔,且必须各不相同,且枚举变量一般是以大写字母表示(或首字母大写);
枚举类型的创建与使用
enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; //声明枚举类型
week day; //定义week数据类型的变量, 数据类型名称week,变量名称day
day=Sun; //为创建的变量day赋值,赋值为Sun
cout<<day<<endl; //枚举变量可以直接输出,输出结果为0
//声明枚举类型color,并创建枚举类型变量color1, color2
enum color {RED, BLUE, WHITE, BLACK} color1, color2,color3,color4;
color3=RED; //将枚举常量值赋给枚举变量
color4=color3; //相同类型的枚举变量赋值,color4的值为RED
//比较同类型枚举变量color3,color4是否相等
if (color3==color4) cout<<"相等";