枚举数据类型
枚举数据类型enum class(c++17新语法)
这里使用的c++17之后的新语法。
类型安全的枚举非常适合于表示固定的值集,尤其是有名称的值集,例如一星期的天数或扑克牌的花色。
定义语句如下示例:
1 | enum class Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; |
旧枚举语法enum(旧语法)
旧语法在定义时没有使用class关键字。
例如,Day枚举可以定义为:
1 | enum Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; |
注意
枚举成员的值必须是编译器的常量,即编译器可以计算出来的常量表达式。
这种表达式只包括字面量、以前定义的枚举成员和声明为const的变量。
不能使用非const变量,即便已使用字面量初始化,也不行。
如果给枚举类型使用enum class,代码就不容易出错。
例如,旧式枚举成员在转换为整型甚至浮点类型时,不进行强制转换,这很容易导致出错。
强类型的enum class是比旧式的enum类型更安全更好的选择。