304 字
2 分钟
04.左值引用和右值引用
2025-01-09

左值引用和右值引用#

左值:可以修改的值,持久化的值

右值:不可被修改的值,或者即将消亡的值。

一个赋值语句可以看作两个部分:

  • 等式左边为变量
  • 等式右边为表达式,表达式具有值。

    表达式可以分为左值表达式和右值表达式。

int func(){
return 0;
}
int a = 10; // 字面量10为右值
int &b = a; // a 为左值表达式
int && m = 10; // 字面量10,为右值表达式
int && m = func(); // 函数返回一个临时值,因此为右值表达式
int &c = 10; // 不能用左值引用绑定右值表达式。

函数的返回值可以是左值,也可以是右值(具体情况具体分析)。

移动语义和完美转发(C++11特性)#

右值引用时为了支持移动语义,允许我们在对象(如:函数的返回值)被销毁前使用其资源,而不是拷贝一份,以显著提高性能。

完美转发:将参数原封不动地传递给另外一个函数,无论是左值还是右值。可以使用std::forward()来实现。

04.左值引用和右值引用
https://chrisnake11.github.io/blog/posts/coding/c基础/04左值引用和右值引用/
作者
Zheyv
发布于
2025-01-09
许可协议
CC BY-NC-SA 4.0