foo関数を考える
void foo(X x);
X行列cass、および関数
X foobar();
私が走るとしましょう
foo(foobar());
この場合、段階的に一時オブジェクトはどうなりますか? 私の理解は、
foobarたとえば、一時オブジェクトを返しますXtemp1。fooXtemp1それ自体の一時的なオブジェクトにコピーし、たとえばXtemp2を破棄してから破棄しXtemp1ます。fooで計算を実行しXtemp2ます。
反対に、次のようにオーバーロードfooすると
void foo(X& x);
void foo(X&& x);
その場合、写真は異なります。特に、
foobar一時を返しますXtemp1。foo新しい一時を作成しませんが、Xtemp1その参照を通じて直接作用します。
この図は正しいですか、そうでない場合は、誰かが指摘して私の間違いを修正してもらえますか? どうもありがとうございました。