C++において重要なクラスと構造体の違いについてのメモ。ここで言うクラスや構造体はC++のものを指します。
INDEX
クラスと構造体
クラスとは
複数の変数や関数を持ち、単独で機能するモジュールのこと。
構造体とは
もともとCにおいての構造体は複数の変数をひと固まりにして新しい型として定義するもの。
C++では構造体の機能が拡張され、クラスと同様、データ構造の中にコンストラクタやデストラクタ等の関数を含むことが出来る。
クラスと構造体の違い
クラスのメンバはデフォルトで非公開(private)なのに対し、C++の構造体のメンバはデフォルトで公開(public)であることが違うのみで、機能的に両者はほぼ同じ。
C++での構造体の拡張構文
[code]
struct type-name {
// 公開関数とメンバ
private:
// 非公開関数とメンバ
} object-list;
[/code]
※object-list は省略可
上記の構造体をクラスに書き換えると以下のようになる。
[code]
class type-name {
// 非公開関数とメンバ
public:
// 公開関数とメンバ
} object-list;
[/code]
※object-list は省略可
まとめ
C++においてはクラスと構造体に大きな違いが見られないことから、メンバ関数を持つものはクラス、メンバ関数を持たないデータ集合であれば構造体、と使い分ければいい思います。