如果我有一个返回某些对象的函数,例如
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/