枚举可以创建符号常量,可以代替 const。示例:

  1. enum spectrum //新类型名称
  2. {
  3. red, //符号常量,0
  4. orange, //符号常量,1
  5. yellow //符号常量,2
  6. };
  7. spectrum band;//声明这种类型的变量

枚举赋值受限制,例如上面代码只能有 3 个可能的值,否则编译器报错。

如果只使用常量,而不创建枚举类型的变量:

  1. enum
  2. {
  3. red, //符号常量,0
  4. orange, //符号常量,1
  5. yellow //符号常量,2
  6. };

4.6.1 设置枚举量的值

示例:

  1. enum bits
  2. {
  3. one = 1, //显式设置枚举量的值
  4. two = 2
  5. };
  6. enum bigstep
  7. {
  8. first, //0
  9. second = 100, //100
  10. third //101
  11. };

4.6.2 枚举的取值范围

C++现在可以通过强制类型转换,增加了可以赋给枚举变量的和法治。每个枚举都有取值范围,通过强制类型转换,可以将取值范围中的任何整数值赋给枚举变量,即使这个值不是枚举值。例如:

  1. enum bits
  2. {
  3. one = 1,
  4. two = 2,
  5. four = 4,
  6. eight = 8
  7. };
  8. bits myflag = bits(6); //合法

C++11增加了作用域内枚举(scoped enumeration)。第10章的“类作用域”将介绍这种枚举。