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

关于非const对象赋给const引用的问题
非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对象时,引用值并不随着对象值的改变而改变。这是为什么呢?谁能帮我解释一下吗?
引用 const

------解决方案--------------------
因为,强制转换中出现了一个int类型的中间变量。
------解决方案--------------------
为了让你有更直观的认识
关于非const对象赋给const引用的有关问题
请看图,右侧是源代码,左侧是反编译结果,红色蓝色部分各自对应,很明显,有个中间变量,值为3。