C ++中的引用和const混淆

时间:2017-12-06 01:10:50

标签: c++ reference const temporary

我知道引用只是变量的另一个名称,它们并不作为内存中的单独对象存在,而是在这里发生的事情

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]

1 个答案:

答案 0 :(得分:3)

您不能直接绑定对不同类型的对象的引用。

对于const int &ri = i;i首先需要转换为int,然后创建一个临时int,然后绑定到ri,它有与原始对象i无关。

BTW:扩展lifetime of the temporary以匹配此处引用的生命周期。

BTW2:临时只能绑定到左值引用const或rvalue-reference。