マイケル・ペイジさん、正解あってますか?

時差ぼけ
↑にコメントを頂いたのですが、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回」には納得できませんな。

それとも、コピーコンストラクタが呼ばれても、「コピーされた」のであって、「コンストラクトされた」訳ではないということでしょうか?
[PR]
by isoq | 2008-05-16 01:56 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇
<< 禁煙:1週間目 デルコンピュータのWeb割引の秘密 >>