我们都知道
Foo returnAFoo()
{
return Foo();
}
Run Code Online (Sandbox Code Playgroud)
将使用返回值优化进行编译,因此即使复制构造函数Foo具有副作用,也不会获取值副本.但愿意
Foo returnAFoo()
{
Foo f = Foo();
return f;
}
Run Code Online (Sandbox Code Playgroud)
太?调试时,第二个结构可能会有所帮助.但是我这样做会丢掉一个重要的优化吗?也许我需要编写一个显式的移动构造函数?