使用 Reference to const 打印变量值给出不同的结果

Printing variable value using Reference to const gives different result

我正在学习 C++ 中的引用。所以我正在尝试不同的例子来更好地理解这个概念。下面给出了一个我无法理解的例子:

double val = 4.55;
const int &ref = val;
    
std::cout << ref <<std::endl; //prints 4 instead of 4.55

我想知道问题是什么,我该如何解决?

问题 是引用 ref 绑定到类型为 int 且值为 4 的临时对象。这在下面有更详细的解释。

当你写道:

const int &ref = val;

创建了一个类型为 int、值为 4 的临时对象,然后将引用 ref 绑定到此临时 int 对象 而不是 直接绑定到变量 val。发生这种情况是因为右侧变量 val 的类型是 double 而在左侧您有 int 的引用.但是要绑定对变量的引用,类型 应该匹配 .

为了解决你应该写的问题:

const double &ref = val; //note int changed to double on the left hand side

上面的语句表示ref是对constdouble的引用。这意味着我们不能使用 ref.

更改变量 val

如果您希望能够使用 ref 更改 val 那么您可以简单地写:

double &ref = val;
const int &ref = val;

在这里您将 ref 初始化为 int 类型,因此它保存 int 类型的值,因此发生隐式类型转换。阅读有关类型转换的更多信息 here