您的位置:首页 > 编程语言 > C语言/C++

C++常量引用

2016-07-12 09:48 218 查看


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

对于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) 这样的话,这个函数可以接受任何值,而不会有太大的限制,可以完美的解决参数不匹配的问题.而且也不用担心会不小心更改了传递进来的参数,保证了数据的安全.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 常量引用