クラスと構造体の違い
構造体/クラス のデフォルトのメンバが 公開/非公開 であること。
- C++では構造体の定義が拡張されており、クラスと同様にメンバ関数、コンストラクタ、デストラクタを含めることができる。
- 慣習的にC形式の方法で構造体を使用し、構造体にはメンバ関数は含めないことが多い。
構造体の形式
struct 構造体名 {
//公開関数とデータメンバ
private:
//非公開関数とデータメンバ
}オブジェクト;
C++での共用体
- 関数とデータの両方をメンバとして含むことができるクラス型を定義する。
- 構造体と同様に、デフォルトですべてのメンバが公開。
- メンバ関数とデータメンバのすべてが同じメモリ位置に存在(クラスではできない)
- 他のクラスを継承することができず、どのような型の基本クラスとしても使用できない。
- staticメンバを持つことができない。
- コンストラクタ、デストラクタを持つことができない。
- 仮想メンバ関数を持つことができない。
無名共用体(anonymous union)
型名のない共用体であり、変数を宣言することができない。
- メンバが同じメモリ位置を共有することを伝える、通常の変数と同じように動作する。
- グローバル無名共用体はstaticとして宣言する必要がある。
- 非公開メンバを含めることができない。
- 同じスコープ内のほかの識別子と重複してはいけない。
参考文献
- 独習C++ 第3版(Herbert Schildt,2002,翔泳社)