C++常量引用

昨天看书时,对图中出现的代码不是很能理解.把代码敲出来以后发现显示的结果如图所示.百度了一下

对于r1 r3而言,r1已经绑定了i,所以i变成什么值,r1也相应的变成合值,r3则跟着r1的改变而改变.所以改动i会相应的改变r1, r3的值

但是对于r2,因为这是一个常量引用,编译器会建立一个临时变量用来存储该常量45的值,如果r2不是绑定到const对象上,那么r2也不可以直接用45来初始化,普通的引用并不是建立一个临时变量来存储右值.

一开始最无法想象的就是r4 r5, 看书的时候一直在想,如果i或者r1发现改变,他们会怎么变化. 动手敲了下代码后发现 他们的值其实已经是确定的了,因为他俩是一个const对象, 当我把i*2和r1*2 分别赋给他们的时候,其实他们得到的是临时变量的值,所以他俩的值是固定的,不会再发生任何改变了的. 因为i*2一开始便已经赋给了临时变量T,  后面虽然我对i进行了增量运算,但并没有再次的把i*2赋给T,也不允许我再次赋一个新值给T,所以r4  r5的值不会发生任何变化.

网上还找到一篇介绍要多用常量引用的原因, 地址: http://www.cnblogs.com/wenjiang/archive/2012/06/09/2543022.html

如果使用常量引用来做形参 void f (const int &i) 这样的话,这个函数可以接受任何值,而不会有太大的限制,可以完美的解决参数不匹配的问题.而且也不用担心会不小心更改了传递进来的参数,保证了数据的安全.




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值