C++的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const。它还允许定义新类型,但必须按严格的限制进行。使用enum的句法与使用结构相似。
enum spectrum{red, orange, yellow, green, blue, violet, indigo, ultraviolet };
这条语句完成两项工作:
1. 让spectrum成为新类型的名称;spectrum被称为枚举(enumeration),就像struct变量被称为结构一样。
2.将red, orange, yellow等作为符号常量,他们对应数值0-7,这些常量叫做枚举量(enumerator).
可以用枚举名来声明这种类型的变量:
spectrum band;
枚举变量具有一些特殊的属性:
1.在不进行强制类型转换的情况下,只能将定义枚举时使用的枚举量赋给这种枚举的变量。如:
band = orange; //有效,orange是枚举量;
band = 2000; //无效,2000不是枚举量;
2.枚举量是整型,可被提升为int类型,但int类型不能自动转换为枚举类型;如:
int color = blue; //有效,枚举量被提升为整型;
band = 3; //无效,int类型不能自动转换为枚举类型;
正确的方式是:band = spectrum(3); 如果试图对一个不适当的值进行强制类型转换,结果是不确定的;