【发布时间】:2013-08-26 13:59:00
【问题描述】:
假设
- 我有一个函数
A f(); - 我想将一个局部变量
a初始化为f的返回值; - 我不想依赖 RVO;
避免f的返回值在何时被复制的最佳选择是什么(以及为什么)
-
a可能需要修改 - 我知道
a不会被修改
选项:
a) A a = f();
b)A&& a = f();
c)const A& = f();
d)const A&& = f();
编辑:
我会说:
- b)
- c)
因为既使用引用又避免了额外的副本(RVO 也可以避免,但不能保证)。那我怎么会看到选项 a) 建议的大部分时间?
我想问题的核心是:我知道 a) 很可能与 c) 具有相同的效果,那么为什么不使用 c) 而不是 a),以使事情明确且独立于编译器?
【问题讨论】:
标签: c++11 reference return local rvalue-reference