c++ - 我们真的需要 C++11 中的 "enum class"吗?

标签 c++ enums c++11 language-lawyer

当我们有的时候,

struct E { enum E_ { HELLO }; }; // 'E' is inheritable

那我们为什么需要,

enum class E { HELLO };  // 'E' is not inheritable

IMO 第二版不提供比第一版更多的功能。我不认为引入 enum class 只是为了节省 2 个花括号 {};!我错过了任何重要的方面吗?

作为一个小问题,除了语法之外,enum classenum struct 之间是否有任何区别(因为两者都有 public 访问说明符) ?

最佳答案

除了已经提到的之外,enum class 的一个优点是 type safety - enum class 枚举器不会隐式转换为整数。

关于c++ - 我们真的需要 C++11 中的 "enum class"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6936030/

相关文章:

c++ - 如何定义 variant<x,y,z> 提取模板参数的子类型

C:关于typedef和enum

c++ - 括号后面的类名是什么类型

c++ - boost/thread.hpp 失败并显示 'clang++ -std=c++11 -stdlib=libc++'

c++ - 在析构函数中持有 std::lock_guard 是否安全?

c++ - 无法正确使用加载的图像数据

c++ - 创建指向其他对象的列表指针

postgresql - 有没有办法在 postgresql 中备份数据+用户定义的枚举?

java - jackson 将不同的字符串反序列化为相同的枚举常量

c++ - 调用模板提供的(静态)函数