85-枚举
B.9.5 枚举
C++使用枚举比C严格。特别是,只能把 enum 常量赋给 enum 变量,然后把变量与其他值作比较。不经过显式强制类型转换,不能把 int 类型值赋给 enum 变量,而且也不能递增一个 enum 变量。下面的代码说明了这些问题:
enum sample {sage, thyme, salt, pepper};
enum sample season;
season = sage; /* C和C++都可以 */
season = 2; /* 在C中会发出警告,在C++中是一个错误 */
season = (enum sample) 3; /* C和C++都可以*/
season++; /* C可以,在C++中是一个错误 */
另外,在C++中,不使用关键字 enum 也可以声明枚举变量:
enum sample {sage, thyme, salt, pepper};
sample season; /* C++可以,在C中不可以 */
与结构和联合的情况类似,如果一个变量和 enum 类型的同名会导致名称冲突。