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

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 
-
|
|
|
!
 
 
-
|
|
|
|
|
!
 
class A
{
public:
  A();
  int x;
}
 
void func()
{
  A a;
  A b = a;
  /*
  b.x = a.x; が行われる。
  */
}

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


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