2016-07-22 22 views
4

看,有一兩件事,我注意到:枚舉結構和枚舉類有什麼區別?在<a href="http://en.cppreference.com/w/cpp/language/enum" rel="nofollow"><code>enum</code> documentation</a>

枚舉密鑰 - 一enumenum class(因爲C++ 11),或enum struct(因爲C++ 11 )

enumenum class,肯定的,但什麼是enum struct

的文檔好像說enum classenum struct是完全一樣的:

[...] 範圍的列舉(與枚舉密鑰enum classenum struct聲明)


  • enum struct | class{ enumerator = constexpr , enumerator = constexpr , ... }
  • [...]

它們真的是一模一樣的?或者我錯過了什麼差異?有什麼意思(如果它們是相同的)對同一事物有兩種不同的語法?

+0

不包括這兩種語法的意義何在?只要在C++中給出結構和類通常是等價的(除了public/private),這是有道理的。 –

回答

7

enum classenum struct是相同的(重點煤礦)。

7.2枚舉聲明
...
....的枚舉密鑰enum classenum struct語義上等價; 與這些一個所聲明的一個枚舉類型是作用域枚舉,其統計員作用域 統計員

3

enum class,肯定的,但什麼是enum struct

enum class相同。

它們真的是一模一樣的?

是的。該文件是正確的。

或者我有遺漏嗎?

不,沒有區別。

對同一事物有兩種不同的語法有什麼意義(如果它們是相同的)?

我還沒有找到任何書面合理化的決定。標準和提案中沒有任何內容。有人可能會猜測這是classstruct類關鍵字的某種對應關係。這是與指定template<class T>語法時所做的相反的決定,其中struct是不允許的。