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

yak*_*oda 0 c++ enums c++14

enum class旨在提供类型安全性,从而通过整数提升消除了隐式转换为整数的方法,但是一旦获得std::underlying_type_t优势,enum class我就不清楚。

Dmi*_*don 7

enum和之间有两个主要区别enum 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
}
Run Code Online (Sandbox Code Playgroud)