在C++的enum工具中提供了一种创建const的常量的方法,使用enum的句法和使用结构相似。例如请看下面语句:
enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet} ;
上面这段语句主要完成两种功能:
- 让spectrum成为新的枚举名,同样可以使用spetcrum当做类型名去声明枚举变量。其实spectrum就像struct变量被称为结构名一样。
- red,orange,yellow,green,blue,violet,indigo等被声明为符号常量,它们所对应的数值为0-7(系统默认)。
可以声明枚举变量,声明使用的语句如下:
spectrum band ;
值得注意的是枚举变量具有一些特殊的属性:
- 在不进行强制转换的情况下,C++程序只能将定义枚举时定义的枚举量赋值给额外声明的枚举变量,如下所示:
band = red ;// valid
band = 2000 ;// invalid
因为枚举变量的取值范围受到定义枚举时候的限制,也就是说只有八个(0-7)可能值
- 把非enum的量赋值给enum的量时编译器会报错
- 对于枚举,只定义了赋值变量。 具体来说没有为枚举变量定义算术运算符,如下所示:
band = orange ;//valid
++band ;//invalid
band = orange + red ;//invalid
- 枚举量属于整形能够被转换为int类型,但int类型的变量不能转换为枚举量
int color = blue ;//valid
band = 3 //invalid
color = 3 + red ;//valid