常量引用的意义,对常量引用进行修改

c++ primer 对常量引用的讲解非常好,首先常量引用本身只是一个简称,因为引用并不是一个变量,所以根本不存在常量的引用,而只是对const的引用,当然,如果熟知就好

书中将常量引用称为一种例外,因为根据引用的使用规范,引用本身和引用的对象,类型必须一致,但常量引用只需要绑定的对象能转化成常量引用的类型即可

要理解这种例外,就要理解常量引用到底发生了什么

其实,常量引用在绑定时,绑定的并不是对象本身,而是一个临时量/右值/临时空间,然后这块临时空间进行强制类型转换成常量引用的类型,再与其绑定,这么一看,好像也没有打破引用的规范,因为类型依然是一致的,只是像很多c++语法一样,有一些我们看不到的隐性操作

常量引用的三种用法:

1.对一个常量进行引用

2.可将右值转为左值,省去拷贝

3.能用来接收各种可转换类型的变量,用于函数重载的参数时,可接收没有匹配参数的数据类型

2、3都是因为,常量引用可以开辟临时值(此时可进行类型转换,同时也是一个右值),并将临时值放入内存(把右值变成左值)

常量引用真的不能被修改?

既然它有地址,有ro权限,那就先取地址,再进行去const强制类型转换,再读地址,再改

本质上就是去掉有ro权限的部分,就为所欲为了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值