假设有一个A
带有移动构造函数的类。考虑一下:
A get()
{
A a;
return std::move( a );
}
// later in the code
A aa = get();
这里显式调用std:move
强制调用移动构造函数,A
因此它可能会抑制调用时的返回值优化get()
。因此,据说更好的实现get()
是这样的:
A get()
{
A a;
return a;
}
但是返回值优化不是 C++11 标准的一部分,所以如果编译器由于某种原因决定在调用get()
. 在这种情况下,A
将在返回时调用的复制构造函数get()
对吗?
那么第一个实现不是get()
更可取吗?