使用 enum class 可定义强类型枚举,避免命名污染并提升类型安全;2. 枚举值需通过作用域操作符访问,如 Color::Red;3. 不能隐式转换为整数,需用 static_cast 显式转换;4. 可指定底层类型如 uint8_t 以控制存储大小;5. 推荐在现代 C++ 中优先使用 enum class。

在C++中,定义一个枚举类(也叫强类型枚举)使用 enum class 关键字,它可以避免传统枚举的命名污染问题,并提供类型安全。下面介绍如何定义和使用枚举类。
定义枚举类
使用 enum class 来声明一个作用域内的枚举类型:
enum class Color {
Red,
Green,
Blue
};
与传统的 enum 不同,enum class 中的枚举值不会被自动提升到外层作用域,必须通过作用域操作符访问。
使用枚举类
要使用枚举类中的值,必须加上类名和作用域操作符:
立即学习“C++免费学习笔记(深入)”;
Color c = Color::Red;
if (c == Color::Green) {
// 处理绿色情况
}
由于枚举类是强类型的,不能直接将其转换为整数,需要显式转换:
int value = static\_cast(Color::Green);
指定底层类型
可以为枚举类指定底层存储类型(如 int、unsigned char 等),以便控制大小或进行序列化:
enum class Status : uint8\_t {
Off = 0,
On = 1,
Standby = 2
};
这样,Status 枚举将使用 8 位无符号整数作为底层类型,节省内存并便于与其他系统交互。
基本上就这些。enum class 比传统 enum 更安全、更清晰,推荐在现代 C++ 中优先使用。











