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++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析
- C与C++之间相互调用实例方法讲解