C++常量引用

来源:互联网 发布:windows根目录在哪 编辑:程序博客网 时间:2024/06/06 09:07

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

对于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) 这样的话,这个函数可以接受任何值,而不会有太大的限制,可以完美的解决参数不匹配的问题.而且也不用担心会不小心更改了传递进来的参数,保证了数据的安全.




0 0
原创粉丝点击