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