使用 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
我正在学习 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