C++/構造体・共用体
< C++
構造体はクラスの一種
編集C++の構造体(struct)は、メンバーがディフォルトのアクセス指定子が public な class です。 class のディフォルトのアクセス指定子は private です。 class と struct の違いはこれだけです。
「C++/初心者むけ/クラス」および「C++/クラスの定義や継承」も参照
共用体もクラスの一種
編集C++の共用体(union)は、基本的にC言語の共用体と同じです。 ただし、C++では構造体がほぼクラスのように扱われるようになったので、ほとんどの共用体もクラスとして扱われます。 つまり、アクセス制限を指定したり、メンバー関数を持つことができるのです。 一方で、当然ながら、共用体には固有の制限があります。
C++の共用体は以下の制限を持ちます。
- 継承の機能がありません。仮想関数を持ちませんし、基底クラスを持てず、基底クラスにもなれません。
- 以下のようなオブジェクトは要素にできません。
- ユーザー定義コンストラクターを持つオブジェクト
- ユーザー定義コピーコンストラクターを持つオブジェクト
- ユーザー定義コピー代入演算子を持つオブジェクト
- ユーザー定義デストラクターを持つオブジェクト
- 共用体は、
static
データメンバーを持てません。 - 共用体は、参照を持てません。