☰
C++补充部分(五)--左值引用右值引用
2026/11/1 1:55:58 网站建设 项目流程

什么是左值,右值???

一句话核心判断口诀:能取地址、有持久身份的是左值;不能取地址、临时、马上就要销毁的是右值。

左值引用,右值引用规则??

左值引用

右值引用

在string中理解左值引用右值引用的优势

移动构造函数是构造函数的一种,移动赋值运算符是赋值运算符的重载。

移动构造函数的第一个参数是该类类型的非 const 右值引用,而拷贝构造函数的第一个参数是该类类型的const 左值引用。这是移动构造与拷贝构造最直观、最核心的区别。

看一下如何调用的

右值引用和移动语义在传参中的提效

引用折叠

模板参数推导类型折叠结果
T& + &→T&左值引用 + 左值引用 = 左值引用
T& + &&→T&左值引用 + 右值引用 = 左值引用
T&& + &→T&右值引用 + 左值引用 = 左值引用
T&& + &&→T&&右值引用 + 右值引用 = 右值引用

在模板的使用上更多

完美转发

完美转发:在模板函数里面,把传入参数的「值类别(左值 / 右值)原封不动地传递给下一个函数,不改变它是左值还是右值。它的搭档就是:万能引用T&&

注意区分:

  • 普通右值引用:Type&&,只能接收右值
  • 万能引用:T&&(T 是模板参数),能自动推导成左值引用 / 右值引用,遵循引用折叠规则

为了解决这个问题就有了完美转发

保持传入参数原本的属性

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询