C++枚举类型
C++有两种类型,一种是枚举类型,一种是强枚举类型,下面看一下普通的枚举类型
1 enum MyEnum 2 { 3 One, 4 Two 5 };
这种枚举类型是暴露在全局下的,枚举变量不受限,可以直接使用,并且枚举类型的值,是一个整数类型,支持比较运算和算法运算,属于弱类型。
看一下强枚举类型:
1 enum class MyEnum 2 { 3 One = 'a', 4 Two 5 };
这种类型属于强枚举类型,其特性分别有:受限的名称空间。枚举值是一个整数常量,不支持算数运算,和比较运算,也不支持默认的转换(如int等)。
强枚举类型的是类型安全的,如果在代码中不小心对强枚举类型执行了++运算,那么编译器将发出错误警告。以避免出现bug。
强枚举类型可以通过显示指定类型,来确定枚举值的类型,下面看一下示例:
1 enum class MyEnum : unsigned int //改变强枚举类型的值类型 2 { 3 One = 'a', 4 Two 5 };
此时MyEnum的值具有int类型的值,但是在此时枚举值依然不能进行比较运算等,这不能修改强枚举类型的属性。
在编写强枚举类型时,有时会大量使用枚举值,C++新特性除了一个语法,解锁枚举空间
例:using enum MyEnum;
此语句将会解锁受限的强枚举值,直接使用枚举值,而不需要加限定符,此语句的有效范围该语句所在的声明周期内,假设在一个函数内using enum MyEnum;那么强枚举类型的解除受限范围只在本函数内有效,超出本函数以外的代码段将必须使用受限的名称空间。

浙公网安备 33010602011771号