如果我有一个返回某些对象的函数,比如
std::vector<int> foo()
{
std::vector<int> v;
v.push_back(1);
return v;
}
然后说
之间有什么区别std::vector<int> &&v = foo();
和
std::vector<int> v = foo();
(为什么)我会不会喜欢另一个?
(我怀疑这可能是一个重复的问题,但我找不到合适的搜索字词。)
答案 0 :(得分:3)
阅读其中一个(并因此知道它正在做一些合理的事情)需要了解临时性以及临时与引用的绑定如何延长临时的生命周期。另一个是:
std::vector<int> v = foo();
总是选择一个更容易理解的。如果foo
返回const&
或&&
,它也可以正常工作,而按&&
存储它只有按值或{{1}返回时才有效}。