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