重複の可能性:
コピー省略と戻り値の最適化とは?
昨日尋ねられた質問によると、私は簡単なテストコードを書きました:
class A
{
public:
A(int)
{
cout<<"constructor\n";
}
A(const A&)
{
cout<<"copy constructor\n";
}
};
int main()
{
A(0);
cout<<"------------------------\n";
A(A(0));
cout<<"------------------------\n";
A(A(A(0)));
cout<<"------------------------\n";
A(A(A(A(0))));
cout<<"------------------------\n";
A(A(A(A(A(0)))));
cout<<"------------------------\n";
return 0;
}
出力:
constructor
------------------------
constructor
------------------------
constructor
copy constructor
------------------------
constructor
copy constructor
------------------------
constructor
copy constructor
copy constructor
------------------------
したがって、コンストラクターが呼び出されたとき、または型キャストが発生したときに明確にするのは非常に奇妙です。誰かこれを説明してもらえますか?