一旦存在std :: underlying_type_t,“枚举类”相对于简单的“枚举”有什么优势?

时间:2019-08-21 08:12:34

标签: c++ enums c++14

enum class旨在提供类型安全性,从而消除通过整数提升而隐式转换为整数的方法,但是一旦有了std::underlying_type_tenum class的优势对我来说还是不清楚的。 >

1 个答案:

答案 0 :(得分:7)

enumenum class之间有两个主要区别:

  1. enum class不允许在enum class值和基础类型之间进行隐式转换。是的,您可以进行显式转换,但不会自动进行。

  2. enum class引入了新的作用域。

enum Enum
{
    Value1,
    Value2 // <- both values are accessible without `Enum::`
}

enum class EnumClass
{
    Value1,
    Value2 // <- values are accessible only with `EnumClass::` prefix
}