コピーコンストラクタがどういうものか、やっと判明したのでメモ。 #code(c,){{ class A { public: A(); int x; } void func() { A a; A b = a; /* b.x = a.x; が行われる。 */ } }} 宣言しなくても、コピーコンストラクタは自動で作成され、 メンバ変数に対して、=演算子が用いられて代入されるんだそうです。 自動で作成されるってところが恐いところで、 メンバにnewしたポインタをもつようなクラスの場合、 コピーコンストラクタを明示的に定義するか、 コピーコンストラクタの宣言のみするかして、対策しないといけないのです。 |