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