【问题标题】:Should I capture return value by value or by r-value reference?我应该按值还是按 r 值引用捕获返回值?
【发布时间】:2013-07-21 04:01:43
【问题描述】:

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

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

那和说有什么区别

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

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

?

(为什么)我更喜欢哪一个?

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

【问题讨论】:

标签: c++ c++11 move-semantics rvalue-reference


【解决方案1】:

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

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

始终选择更容易理解的那个。如果foo 返回const&amp;&amp;&amp;,它也同样有效,而通过&amp;&amp; 存储它只有在它按值或&amp;&amp; 返回时才有效。

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多