关于非const对象赋给const引用的问题

叫我阿牛 2013-09-29 07:42:46
非const对象可以赋给const引用。这里讨论两种类型,一种是非const对象赋给相同类型的const引用;另一种是非const对象赋给不同但相关类型的const引用。分别看下边两个例子。
	
int i=3;
const int &ri=i;
cout<<i<<endl;
cout<<ri<<endl;
i=5;
cout<<i<<endl;
cout<<ri<<endl;
system("pause");

结果如下:

3
3
5
5

也就是说随着对象的改变,引用也随之改变。这个可以理解,因为它们指向的是同一块内存。
现在考虑另一种情况:
	
double i=3.14;
const int &ri=i;
cout<<i<<endl;
cout<<ri<<endl;
i=5.14;
cout<<i<<endl;
cout<<ri<<endl;

结果如下:

3.14
3
5.14
3

当int类型的const引用指向非const类型的double对象时,引用值并不随着对象值的改变而改变。这是为什么呢?谁能帮我解释一下吗?
...全文
260 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
叫我阿牛 2013-09-29
  • 打赏
  • 举报
回复
pathletboy说的很有道理,虽然汇编代码看不懂,不过可以理解了!thank you!
pathletboy 2013-09-29
  • 打赏
  • 举报
回复
为了让你有更直观的认识

请看图,右侧是源代码,左侧是反编译结果,红色蓝色部分各自对应,很明显,有个中间变量,值为3。
pathletboy 2013-09-29
  • 打赏
  • 举报
回复
因为,强制转换中出现了一个int类型的中间变量。

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧