这可能取决于编译器(使用 VS2010),也可能不是,但为什么以下操作不会调用预期的移动行为:
LargeObject x;
x = SomeFunc(x);
我已将函数定义为对
LargeObject SomeFunc(const LargeObject& ob)
{
LargeObject newOb;
// perform operation on new object using old object
return newOb;
}
LargeObject SomeFunc(LargeObject&& ob)
{
// change object directly...
return std::move(ob);
}
我明确需要写
x = SomeFunc(std::move(x));
让它发生,我不喜欢那样...
编辑:使用 const-ref 的第一个功能是因为我还需要做类似的事情
LargeObject x;
LargeObject y = SomeFunc(x);