涼の成長記録

自らの人生に主導権を持つべく、独立を目指して2014年3月31日を持ってITエンジニアを退職。そんな23歳♂の成長記録。

構造体とクラスの違い

以下のようなコードを書いていたら、「構造体にもコンストラクター書けるの?」と驚かれ、驚きました。確かに、構造体はCの構造体そのままの機能だと思っている方は多い気がします。(私の周りだけかもしれませんが。)驚かれたのは、以下のようなコードです。

// サンプル構造体
struct TSampleStructure {
    unsigned int member1;
    unsigned int member2;

    TSampleStructure () : member1(0), member2(0) {}
};


構造体とクラスに、デフォルトのアクセス属性以外の違いはありません。構造体はpublic, クラスはprivateです。コンストラクター、デストラクターが書けることは勿論、メソッドも持てるし、継承だってできます。[JIS X3014:2003の9.クラス]には、こう書かれています。

構造体は,《クラスキー》structを付けて定義するクラスとする。そのメンバ及び基底クラスは,特に指定がない限り公開となる。


「structを付けて定義するクラスとする。」と明確に書かれています。つまり、構造体はクラスの一種です。共用体(union)なんかも同様です。慣習や、そのプロジェクトのルールにもよると思うのですが、私個人が構造体を使うのは、データの集合を表す場合です。


いやー、プログラミングって面白いですね。
ではでは。