enum class
旨在提供类型安全性,从而消除通过整数提升而隐式转换为整数的方法,但是一旦有了std::underlying_type_t
,enum class
的优势对我来说还是不清楚的。 >
答案 0 :(得分:7)
enum
和enum class
之间有两个主要区别:
enum class
不允许在enum class
值和基础类型之间进行隐式转换。是的,您可以进行显式转换,但不会自动进行。
enum class
引入了新的作用域。
enum Enum
{
Value1,
Value2 // <- both values are accessible without `Enum::`
}
enum class EnumClass
{
Value1,
Value2 // <- values are accessible only with `EnumClass::` prefix
}