|
CExample obj2 = obj1;この時、コピーコンストラクターが呼び出される。
class CExample {処理は、次のように書かれる。
public:
CExample(const CExample &obj); // コピーコンストラクター
};
CExample::CExample(const CExample &obj)
{
...
}
CExample obj2 = obj1;とした場合、理論上は、obj2が宣言された時点で初期化され、更にobj1の値を使って初期化され、都合二回初期化されることになる。しかしそうであれば、最初のobj2の初期化は完全に無駄となる。このような無駄を避けるため、この場合はコピーコンストラクターが一回だけ呼び出される。
CExample obj2; // obj2のコンストラクターが呼ばれる
obj2 = obj1; // ただの代入