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