枚举可以创建符号常量,可以代替 const。示例:
enum spectrum //新类型名称
{
red, //符号常量,0
orange, //符号常量,1
yellow //符号常量,2
};
spectrum band;//声明这种类型的变量
枚举赋值受限制,例如上面代码只能有 3 个可能的值,否则编译器报错。
如果只使用常量,而不创建枚举类型的变量:
enum
{
red, //符号常量,0
orange, //符号常量,1
yellow //符号常量,2
};
4.6.1 设置枚举量的值
示例:
enum bits
{
one = 1, //显式设置枚举量的值
two = 2
};
enum bigstep
{
first, //0
second = 100, //100
third //101
};
4.6.2 枚举的取值范围
C++现在可以通过强制类型转换,增加了可以赋给枚举变量的和法治。每个枚举都有取值范围,通过强制类型转换,可以将取值范围中的任何整数值赋给枚举变量,即使这个值不是枚举值。例如:
enum bits
{
one = 1,
two = 2,
four = 4,
eight = 8
};
bits myflag = bits(6); //合法
C++11增加了作用域内枚举(scoped enumeration)。第10章的“类作用域”将介绍这种枚举。