【发布时间】:2014-09-21 10:17:32
【问题描述】:
为什么引用不能捕获临时值,而 const 引用和右值引用可以捕获并延长对象寿命。换句话说,虽然前两行是合法的,但第三行不合法:
const string &a = string("a");
string &&b = string("b");
string &c = string("c"); // why illegal?
【问题讨论】:
-
你打算用它做什么?修改它并将更改传播给任何人?
-
@chris 我会用它来优化。
-
那会是什么优化?
-
副本没有解决这个问题提出的关于右值引用的部分。
-
@chris 你打算做什么右值引用可以用来代替常规引用?为什么标准不问这样的问题?您仍然可以将右值引用不仅用于类似 std::move 的操作,还可以作为我所介绍的上下文中常规引用的替代品。您的 const 引用也可以延长寿命。为什么延长 const 对象的生命周期而不延长非 const 对象的生命周期?
标签: c++ reference rvalue-reference const-reference