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