我试图理解 C++ 中的常量引用,但我偶然发现了这个问题:
当我将 double 分配给 const int& 然后更改引用 double 的值时,我的 int 引用的值保持不变。
double i = 10;
const int &ref = i;
i = 20;
cout << "i: " << i << endl; // i = 20
cout << "&ref: " << ref << endl; // ref = 10
而在分配 int 时,值会发生变化。
int i = 10;
const int &ref = i;
i = 20;
cout << "i: " << i << endl; // i = 20
cout << "&ref: " << ref << endl; // ref = 20
这种行为的原因是什么?我的猜测是,当分配 double 时,隐式转换为 int 会创建一个新对象,然后分配它的引用,但是我在任何地方都找不到它。