我了解了返回值优化(C++ 中的对象返回,http ://en.wikipedia.org/wiki/Return_value_optimization,http : //blog.knatten.org/2011/08/26/dont-be-afraid-of- Return-by-value-know-the-return-value-optimization/)防止临时对象生成。
我还了解了右值引用(http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html),它也可用于防止临时对象一代。
实际上,我可以只返回值而不担心复制对象的性能下降吗?
我的意思是,这两个代码片段是否等效?
A hello()
{
A a(20);
cout << &a << endl;
return a;
}
// rvalue reference to prevent temporary object creation
A&& a = hello();
cout << &a << endl;
// expects compiler remove the temporary object
A a = hello();
cout << &a << endl;