我知道引用只是变量的另一个名称,它们并不作为内存中的单独对象存在,而是在这里发生的事情
double i = 24.7;
const int &ri = i; //notice int here
std::cout << i << std::endl; //prints 24.7
i = 44.4;
std::cout << ri << std::endl; // prints 24
std::cout << i << std::endl; //prints 44.4
我的问题是ri
是什么的别名? [某处记忆中的值24]
答案 0 :(得分:3)
您不能直接绑定对不同类型的对象的引用。
对于const int &ri = i;
,i
首先需要转换为int
,然后创建一个临时int
,然后绑定到ri
,它有与原始对象i
无关。
BTW:扩展lifetime of the temporary以匹配此处引用的生命周期。
BTW2:临时只能绑定到左值引用const
或rvalue-reference。