c++ 枚举结构和枚举类的区别是什么?

23c0lvtd  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(156)

查看enum documentation时,我注意到一件事:

枚举键-enumenum class(C11起)或enum struct(C11起)之一

enumenum class,当然可以,但是enum struct是什么呢?
文档似乎说enum classenum struct完全相同:
[...]* 作用域枚举 *(使用 * enum-key * enum classenum struct声明)

  • x1米11米1x|class * 名称 * { enumerator = constexpr , enumerator = constexpr , ... }
  • [...]

它们真的完全一样吗?或者有什么我错过的不同之处吗?为同一件事使用两种不同的语法有什么意义(如果它们是一样的)?

t2a7ltrp

t2a7ltrp1#

enum classenum struct是相同的(强调是我的)。

7.2枚举声明

...
2.... * 枚举密钥 * enum classenum struct是***语义等价的***;用这些中的一个声明的枚举类型是 * 作用域枚举 *,并且它的 * 枚举数 * 是 * 作用域枚举数 *。

h5qlskok

h5qlskok2#

enum class,当然可以,但是enum struct是什么呢?
enum class相同。
它们真的一模一样吗?
是的。文件是正确的。
或者有什么我没注意到的不同?
不,没有区别。
对于同一个东西使用两种不同的语法有什么意义(如果它们是相同的)?
我还没有找到任何书面的合理解释。在标准和提案中都没有。有人可能会猜测它是classstruct类键的某种对应物。这是一个与指定template<class T>语法时相反的决定,在template<class T>语法中不允许struct

相关问题