構造体とクラスの違い
以下のようなコードを書いていたら、「構造体にもコンストラクター書けるの?」と驚かれ、驚きました。確かに、構造体はCの構造体そのままの機能だと思っている方は多い気がします。(私の周りだけかもしれませんが。)驚かれたのは、以下のようなコードです。
// サンプル構造体 struct TSampleStructure { unsigned int member1; unsigned int member2; TSampleStructure () : member1(0), member2(0) {} };
構造体とクラスに、デフォルトのアクセス属性以外の違いはありません。構造体はpublic, クラスはprivateです。コンストラクター、デストラクターが書けることは勿論、メソッドも持てるし、継承だってできます。[JIS X3014:2003の9.クラス]には、こう書かれています。
構造体は,《クラスキー》structを付けて定義するクラスとする。そのメンバ及び基底クラスは,特に指定がない限り公開となる。
「structを付けて定義するクラスとする。」と明確に書かれています。つまり、構造体はクラスの一種です。共用体(union)なんかも同様です。慣習や、そのプロジェクトのルールにもよると思うのですが、私個人が構造体を使うのは、データの集合を表す場合です。
いやー、プログラミングって面白いですね。
ではでは。