戻り値の最適化について学びました ( 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 ) についても学びました。世代。
実際には、オブジェクトのコピーによるパフォーマンスの低下を気にせずに値を返すことはできますか?
つまり、これら 2 つのコード スニペットは同等ですか?
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;