C++ primer 查漏补缺六:左值和右值

左值和右值

4.1 章
简单来说:左值可以位于赋值语句的左侧,右值不行
C++ 里面这个问题比较复杂,我们结合运算符一个个看

赋值运算符 : int a =1;
左值作为左侧运算对象,结果是一个左值

取地址符: 取地址符作用于一个左值运算对象,返回一个右值(指针)

int a =1;
&a;//结果是右值
int * p =&a;

而 内置解引用 , 下标 , 迭代器解引用 , string vector的下标 求值结果都是左值

内置类型和迭代器的递增递减运算符作用于左值运算对象,结果也是左值

左值引用和右值引用

右值引用(rvalue reference): 必须绑定到右值的引用。我们通过&&而不是&来获得右值引用。

右值引用有一个重要的性质一只能绑定到一个将要销毁的对象。因此,我们可以自由地将一个右值引用的资源“移动”到另一个对象中。

左值引用(lvalue reference),不能将其绑定到要求转换的表达式、字面常量或是返回右值的表达式。但我们可以将一个cost的左值引用或者一个右值引用绑定到这类表达式上。

右值引用有着完全相反的绑定特性:我们可以将一个右值引用绑定到这类表达式上,但不能将一个右值引用直接绑定到一个左值上。

在这里插入图片描述

为什么要引入右值引用

第十三章

未完待续

C++右值引用(std::move)
为什么C++11会引入右值引用?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值