コピーコンストラクタがどういうものか、やっと判明したのでメモ。

#code(c,){{
class A
{
public:
  A();
  int x;
}

void func()
{
  A a;
  A b = a;
  /*
  b.x = a.x; が行われる。
  */
}

}}

宣言しなくても、コピーコンストラクタは自動で作成され、
メンバ変数に対して、=演算子が用いられて代入されるんだそうです。
自動で作成されるってところが恐いところで、
メンバにnewしたポインタをもつようなクラスの場合、
コピーコンストラクタを明示的に定義するか、
コピーコンストラクタの宣言のみするかして、対策しないといけないのです。


    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS