【现代C++语言核心特性】第六章 右值引用

本文详细介绍了C++11中的右值引用,包括其定义、移动语意、值类别和如何将左值转换为右值。讲解了std::move在转换过程中的作用,以及万能引用和引用折叠的概念。同时阐述了完美转发的重要性,std::forward根据左值和右值的实际状态进行精确转发。
摘要由CSDN通过智能技术生成

定义

左值: 指向特定内存的,具有名称的值。拥有相对稳定的内存地址和较长的生命周期。
右值:不指向稳定内存地址的匿名值,生命周期很短,通常是暂时性的。
简单的判断方法:能取地址的是左值,反之则为右值。
举例:x++是右值,++x是左值。
注意:除字符串字面量意外,通常字面量都是一个右值。
左值引用
非常量左值引用只能引用左值,而常量左值引用除了可以引用左值,还能够引用右值。
int &x1 = 7 // 编译错误,非常量左值引用不能引用右值
const int &x2 = 7 // 编译通过,常量左值引用可以引用右值
拷贝构造函数和赋值运算符重载通常情况下形参都是常量左值引用。

右值引用

右值引用 能且只能引用右值。
右值引用可以延长右值的生命周期,减少对象赋值,提升程序性能。
Tips:GCC编译关闭语言优化选项:-fno-elide-c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值