【发布时间】:2013-10-15 22:33:03
【问题描述】:
我试图理解 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 会创建一个新对象,然后分配它的引用,但是我在任何地方都找不到它。
【问题讨论】:
-
=没有赋值,它的初始化/构造。
-
@juanchopanza 我正在使用来自 Cygwin 的 g++
-
@KubaSpatny 抱歉,我看错了作业。忽略我之前的消息。