枚举
内容简介
枚举用于给一组相关的常量命名,让代码比直接写数字更易读。现代 C++ 优先使用 enum class,传统 enum 常见于 C 代码和旧 C++ 代码。
用法
C++ enum class
enum class Color {
Red,
Green,
Blue
};
Color color = Color::Red;
int value = static_cast<int>(color);传统 enum
enum Status {
STATUS_OK,
STATUS_ERROR,
STATUS_NOT_FOUND
};
enum Status status = STATUS_OK;默认从 0 开始递增,也可以手动指定:
enum Week {
MON = 1,
TUE,
WED
};最佳代码实践
- 新 C++ 代码优先使用
enum class,避免命名冲突和隐式转换。 - 枚举值命名要表达业务含义,不要只写
A、B、C。 - 和 C 接口交互、做位掩码时,传统
enum仍然常见。
错误用法
enum Status { OK, ERROR };
enum Result { OK, FAILED }; // 错误:传统 enum 的枚举名容易污染外层作用域enum class Status { OK, ERROR };
int status = Status::OK; // 错误:enum class 不能隐式转 int注意事项
- 枚举不等于字符串,不能直接输出枚举名称。
- 需要遍历枚举时,可以添加
COUNT作为数量哨兵,但要避免把它当成真实业务值。
学习路径
- 上一节:CandCpp数据变量进阶
- 当前阶段:CandCPP基础
- 下一节:CandCpp结构体