在C++中,enum是一种枚举类型,用于定义一组常量。enum类型只能定义一次,不能重定义。然而,如果需要重新定义enum类型,可以使用enum class关键字。
enum class是C++11引入的新特性,用于创建强类型的枚举类型。使用enum class定义的枚举类型具有更强的类型安全性,不会自动转换为整数类型,且枚举值的作用域限定在enum class内部。
以下是使用enum class重新定义枚举类型的示例:
enum class Color { Red, Green, Blue };
int main() {
Color color = Color::Red;
// color = 0; // 错误,不能将整数赋值给enum class类型
// color = Color::Green; // 错误,不能将不同的enum class类型赋值给color
if (color == Color::Red) {
// ...
}
return 0;
}
在这个示例中,enum class Color定义了三个枚举值:Red、Green和Blue。使用enum class定义的枚举类型不能直接赋值为整数,也不能将不同的enum class类型赋值给彼此。而且,枚举值的作用域被限定在Color内部,需要使用Color::Red的方式访问枚举值。
需要注意的是,使用enum class重新定义枚举类型后,枚举值不再自动转换为整数类型,需要通过显式转换才能将枚举值转换为整数。