2016-07-22 8 views
4

enum documentationを見て、私は気づいた一つのことがありました:enum構造体とenumクラスの違いは何ですか?

列挙キー - enumの1、enum class、またはenum struct(C++ 11以降(C++ 11以降) )

enumenum class、必ず、しかしenum structは何ですか?

ドキュメント

enum classenum structがまったく同じであることを言っているように見える:

[...] スコープ(列挙キーenum classまたはenum structで宣言された)列挙


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

彼らは本当に正確に同じですか?それとも私が逃した違いがありますか?同じものに対して2つの異なる構文を持つ点(同じであれば)は何ですか?

+0

両方の構文を含まない点は何ですか?構造体とクラスは、C++では通常は(public/privateとは別に)等価であるということだけでは意味があります。 –

答えて

7

enum classおよびenum structは同じ(強調表示)です。

7.2列挙宣言
...
.... 列挙鍵enum classenum structとは意味的に等価あります。これらのいずれかを使用して宣言 列挙型はが列挙スコープ、およびその列挙子が 列挙子をスコープされています。

3

enum class、必ず、しかしenum structは何ですか?

enum classと同じです。

本当にまったく同じですか?

はい。マニュアルが正しい。

また、私が逃した違いはありますか?

いいえ違いはありません。

同じものについて2つの異なる構文を持つ点(同じ場合)とは何ですか?

私は決定のための書面による合理化が見つかりませんでした。標準や提案には何もありません。ある人は、classstructのクラスキーの対応するものだと推測するかもしれません。これは、template<class T>の構文が指定されたときとは逆の決定で、structは許可されていません。

関連する問題