2

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

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

那和说有什么区别

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

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

?

(为什么)我会更喜欢其中一个吗?

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

4

1 回答 1

3

阅读其中之一(并因此知道它正在做一些合理的事情)需要了解临时对象以及将临时对象绑定到引用如何延长临时对象的生命周期。另一个是:

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

总是选择一个更容易理解的。foo如果返回 aconst&或 a ,它也同样有效&&,而存储它&&仅在它按值或按返回时才有效&&

于 2013-07-21T04:07:40.093 回答