enum class和enum 的区别
时间: 2024-05-11 10:18:26 浏览: 108
C++枚举类型enum与enum class的使用
`enum class` 和 `enum` 是 C++ 中的两种枚举类型。
`enum class` 是 C++11 新增的一种枚举类型,它是一种强类型的枚举类型。也就是说,`enum class` 会将枚举类型的值限制在该枚举类型作用域内,不会自动地转换为整数类型。此外,`enum class` 还可以通过作用域限定符来访问其枚举值,避免了命名冲突的问题。
例如:
```c++
enum class Color {
Red,
Green,
Blue
};
Color c = Color::Red; // 可以使用作用域限定符来访问枚举值
int i = c; // 编译错误,不能将枚举类型隐式转换为整数类型
```
`enum` 是 C++ 中的另一种枚举类型,它不是强类型的,而是将枚举值隐式地转换为整数类型。同时,枚举值的作用域是在枚举类型所在的作用域内。
例如:
```c++
enum Color {
Red,
Green,
Blue
};
Color c = Red; // 可以直接访问枚举值
int i = c; // 可以将枚举值隐式转换为整数类型
```
因此,`enum class` 和 `enum` 的主要区别在于强类型和作用域限定符。在使用枚举类型时,应该根据实际情况选择合适的类型。
阅读全文