考虑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
通过其引用直接作用。
这张照片是否正确,或者如果不是,有人可以指出并纠正我的错误吗?非常感谢。