美文网首页
奇妙的enum class,enum struct组合

奇妙的enum class,enum struct组合

作者: Then丶 | 来源:发表于2019-12-19 19:17 被阅读0次

奇妙的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

相关文章

网友评论

      本文标题:奇妙的enum class,enum struct组合

      本文链接:https://www.haomeiwen.com/subject/zndvnctx.html