在标准C++中,枚举类型不是类型安全的。枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较。
此外,枚举所使用整数类型及其大小都由实现方法定义,皆无法明确指定。
枚举的名称全数暴露于一般范围中,C++03两个不同的枚举,不可以有相同的枚举名。如:enum Side{ Right, Left }; 和 enum Thing{ Wrong, Right }; 不能一起使用。
enum class
此种枚举为类型安全的。枚举类型不能隐式地转换为整数;也无法与整数数值做比较。
还可以指定类型
enum class Enumer:long {val1,val2=100,val3};
建议使用c11 增强枚举类