知识卡片

限域枚举隔离

普通读书笔记卡 · 1403

内容

enum class 将枚举项限制在枚举作用域内,且不隐式转换为整数。它可指定底层类型并前置声明,以显式转换换取名称隔离和类型安全。表达状态、协议类别时,这种边界比沿用裸整数更能防止误混。

参考来源

- 位置:《Effective Modern C++》第3章《移步现代C++》,条款十:优先考虑限域 enum 而非未限域 enum(源文件:_epub-src/EPUB/text/ch004.xhtml) - 结论依据:原文对照枚举作用域、显式转换与底层类型,支持用限域枚举建立类型边界。 - 原始内容:记住 + C++98的 enum 即非限域 enum 。 + 限域 enum 的枚举名仅在 enum 内可见。要转换为其它类型只能使用 cast 。 + 非限域/限域 enum 都支持底层类型说明语法,限域 enum 底层类型默认是 int 。非限域 enum 没有默认底层类型。 + 限域 enum 总是可以前置声明。非限域 enum 仅当指定它们的底层类型时才能前置。