奇妙的enum class,enum struct组合
在c++11标准中,除了传统的enum关键字之外, 还新增了一个概念: enum class, enum struct组合的形式(两者是等价的),当然单纯的enum关键字和enum class组合并不冲突,都能使用。 这一组合的出现就是为了解决传统enum关键字面临的问题。
enum class组合具有class封装性的特性,作用域是确定的
enum class A
{
my_enum3 = 0,
};
enum class B
{
my_enum3 = 0,
};
enum C
{
my_enum3 = 0,
};
如上面这样声明和定义枚举就是正确的,要访问A和B中的枚举是需要加上作用域的,形如:
A a = A::my_enum3;
B b = B::my_enum3;
可以指定底层数据类型
enum class A: int /** 每个枚举都是int类型的 */
{
my_enum3 = 0,
};
enum class B: unsigned char /** 每个枚举都是unsigned char类型的 */
{
my_enum3 = 0,
};
不能隐式转换
int my_int = A::my_enum3; /** 错误,无法通过编译 */
int my_int = static_cast(A::my_enum3); /** 正确, 可以通过编译 */
原文:https://www.cnblogs.com/LuckCoder/p/11021797.html
网友评论