如果我有一个返回某些对象的函数,例如

std::vector<int> foo()
{
    std::vector<int> v;
    v.push_back(1);
    return v;
}

那说什么有什么不同
std::vector<int> &&v = foo();


std::vector<int> v = foo();



(为什么)我会比另一个更喜欢?

(我怀疑这可能是一个重复的问题,但我找不到正确的搜索词。)

最佳答案

读取其中之一(从而知道它在做合理的事情)需要了解有关临时对象以及将临时对象绑定(bind)到引用的方式如何延长临时对象的寿命。另一个是:

std::vector<int> v = foo();

始终选择一种更容易理解的方法。如果foo返回了const&&&,它也同样有效,而按&&存储它仅在按值或&&返回时才有效。

关于c++ - 我应该按值还是按r值引用获取返回值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17768921/

10-11 23:06
查看更多