C++11 enum class

2018-08-25  本文已影响118人  期门

传统的枚举类型不是类型安全的,会被视作整数。

C++11 枚举类型是类型安全的:不能够被隐式的转换为整数,同时也不能够将其与整数数字进行比较,更不可能对不同的枚举类型的枚举值进行比较。相当于是创建了一个新的类型。

使用冒号及类型关键字来指定枚举中枚举值的类型。

enum class new_enum:unsigned int{ 

     value1,

    value2,

    value3 = 100,

    value4 = 100};

输出时,需要进行一次强制类型转换,或者重载operator<<操作符:

#include<iostream>

template std::ostream& operator<<(typename std::enable_if::value, std::ostream>::type& stream, const T& e)

{

    return stream << static_cast::type>(e);

}

上一篇下一篇

猜你喜欢

热点阅读