C++ 枚举结构和枚举类之间有什么区别?
看着照片,我注意到一件事: 枚举键-从C++11开始的C++ 枚举结构和枚举类之间有什么区别?,c++,c++11,enums,C++,C++11,Enums,看着照片,我注意到一件事: 枚举键-从C++11开始的枚举,枚举类,或从C++11开始的枚举结构之一 枚举和枚举类,当然可以,但是什么是枚举结构 文档似乎说enum class和enum struct完全相同: […]作用域枚举(使用枚举键枚举类或枚举结构声明) enum结构|classname{enumerator=constexpr,enumerator=constexpr,…} [……] 它们真的完全一样吗?还是我遗漏了什么差异?同一事物有两种不同语法有什么意义(如果它们相同的话?e
枚举
,枚举类
,或从C++11开始的枚举结构
之一
枚举
和枚举类
,当然可以,但是什么是枚举结构
文档似乎说enum class
和enum struct
完全相同:
[…]作用域枚举(使用枚举键枚举类
或枚举结构
声明)
|enum结构
nameclass
{enumerator=constexpr,enumerator=constexpr,…}
- [……]
它们真的完全一样吗?还是我遗漏了什么差异?同一事物有两种不同语法有什么意义(如果它们相同的话?
enum class
和enum struct
是相同的(强调我的意思)
7.2枚举声明
2.枚举键enum class
和enum struct
在语义上是等价的;
使用其中之一声明的枚举类型是作用域枚举,其枚举数是作用域的
统计员
enum类
,当然可以,但是什么是enum结构
与枚举类相同
它们真的完全一样吗
对。文档是正确的
还是我遗漏了什么差异
不,没有区别
对同一事物使用两种不同的语法有什么意义(如果它们相同的话)
我还没有找到任何书面的理由来解释这个决定。标准和提案中没有任何内容。有人可能会猜测它是
class
vsstruct
类键的某种对应物。这与指定template
语法时的决定相反,此处不允许使用struct
。不同时包含这两种语法有什么意义?在C++中,给定两个结构和类通常是等价的(除了公有/私有)是有意义的,但是<>代码>模板<代码>是允许的,并且也等价于<代码>模板< /代码>!标准在这两点上相当混乱,不是吗?@ZeeByeZon:No.class
和struct
在类型声明中是近义词是很常见的。唯一的区别是其成员的默认公共/私有访问权限。由于作用域枚举没有私有成员,因此两者之间的唯一区别是没有意义的。@Nicolas Bolas不仅仅是成员。它还影响继承。