使用常量和非常量引用传递右值引用
在 C 中,通过常量引用传递右值是允许的,同时使用非常量引用传递右值const 引用会引发错误。考虑以下代码片段:
<code class="cpp">void display(const int& a) { cout << a; }</code>
当使用右值(例如文字)调用时,此代码将成功编译并正常工作:
<code class="cpp">display(5); // OK</code>
但是,如果删除了 const来自引用参数:
<code class="cpp">void display(int& a) { cout << a; }</code>
使用右值调用此函数将导致编译错误。这就提出了一个问题:为什么允许通过 const 引用传递右值,而不是通过非常量引用传递右值?
延长临时变量的生命周期
答案在于 C 如何实现处理作为表达式结果创建的临时值。当使用右值时,会创建一个临时对象来保存其值。通常,此类临时对象在使用后立即销毁。但是,当绑定到 const 引用时,它们将被授予延长的生命周期,直到包含范围结束。
Const 引用的好处
使用 const 引用来传递rvalues 提供以下好处:
以上是以下是一些基于内容的标题选项,格式为问题: * 为什么 C 中右值可以通过 Const 引用传递,但不能通过非 Const 引用传递? * C 右值参考:何时通过的详细内容。更多信息请关注PHP中文网其他相关文章!