我们都知道,
Foo returnAFoo()
{
return Foo();
}
将使用返回值优化编译,即使Foo
的复制构造函数具有副作用,也不会进行值复制。但是会
Foo returnAFoo()
{
Foo f = Foo();
return f;
}
也是吗?第二个结构在调试时可能会有帮助。但我这样做是不是放弃了一个重要的优化?也许我需要编写一个明确的移动构造函数?