C++ > クラス、構造体、共用体の関連

クラスと構造体の違い

構造体/クラス のデフォルトのメンバが 公開/非公開 であること。

  • C++では構造体の定義が拡張されており、クラスと同様にメンバ関数、コンストラクタ、デストラクタを含めることができる。
  • 慣習的にC形式の方法で構造体を使用し、構造体にはメンバ関数は含めないことが多い。

構造体の形式

struct 構造体名 {
  //公開関数とデータメンバ
private:
  //非公開関数とデータメンバ
}オブジェクト;

C++での共用体

  • 関数とデータの両方をメンバとして含むことができるクラス型を定義する。
  • 構造体と同様に、デフォルトですべてのメンバが公開。
  • メンバ関数とデータメンバのすべてが同じメモリ位置に存在(クラスではできない)
  • 他のクラスを継承することができず、どのような型の基本クラスとしても使用できない。
  • staticメンバを持つことができない。
  • コンストラクタ、デストラクタを持つことができない。
  • 仮想メンバ関数を持つことができない。

無名共用体(anonymous union)

型名のない共用体であり、変数を宣言することができない。

  • メンバが同じメモリ位置を共有することを伝える、通常の変数と同じように動作する。
  • グローバル無名共用体はstaticとして宣言する必要がある。
  • 非公開メンバを含めることができない。
  • 同じスコープ内のほかの識別子と重複してはいけない。


参考文献

  • 独習C++ 第3版(Herbert Schildt,2002,翔泳社)
最終更新:2011年03月04日 14:10