# c++强类型枚举(enum class)

1.普通枚举的缺点

  • 不能有相同的枚举名

       enum Side{ Right, Left }; 
       enum Thing{ Wrong, Right };   //Right枚举名冲突,不可以
    
  • 枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较

如上例中,slide的right可以和thing中wrong比较,但它们其实代表不同的含义

2. 强枚举类型的优点

强枚举解决了上述的缺点

  • 可以有相同的枚举名

       enum class Side{ Right, Left }; 
       enum class Thing{ Wrong, Right };  
    
  • 枚举类型是安全的,不能隐式的转换为整数,故而不能和不同类型的枚举名作比较,只能通过强制类型转换后比较

      #include 
      using namespace std;
    
      enum class Enumeration1
      {
      	Val1, // 0
      	Val2, // 1
      	Val3 = 100,
      	Val4 /* = 101 */
      };
      enum class Enumeration2:long 
      {
      	val1,
      	val2=100,
      	val3
      };
      int main(int argc, char** argv)
      {
          Enumeration1 my=Enumeration1::Val3;
          cout<(my)<(Enumeration2::val2)<

注:默认未被初始化的枚举值的值默认将比其前面的枚举值大1

你可能感兴趣的:(# c++强类型枚举(enum class))