如果我有一个返回某个对象的函数,例如
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++ - 我应该按值还是按右值引用捕获返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17768921/