時差ぼけ
↑にコメントを頂いたのですが、
https://go-kaidoku.jp の問題の答えに納得いかなかったので、実際にVC 6.0でテストしてみました。
問題の抜粋:
class A {};
A DoNothing ( A object)
{
return object;
}
main()
{
A object;
DoNothing(object);
}
このコードを実行するとクラスAのオブジェクトは何回コンストラクトされますか?
私の予想は、3回だったのですが、
このサイトの正解は1回だそうです。
(3から初めて、20くらいまで行ってから、2,0,1の順に当てずっぽうして正解を見つけました ^^;)
う~ん、どう考えてもコンストラクタが1回、コピーコンストラクタが最低2回は呼ばれるはず。
(C++の実装次第では、コピーコンストラクタがもっとたくさん呼ばれる可能性もある気がする。)
実際にVCで確認しても、コンストラクタが1回、コピーコンストラクタが2回で、
合計3回コンストラクトされました。
なので、「正解は1回」には納得できませんな。
それとも、コピーコンストラクタが呼ばれても、「コピーされた」のであって、「コンストラクトされた」訳ではないということでしょうか?