为什么在C ++中将双重参考值分配给float变量时不变

时间:2018-07-10 07:43:26

标签: c++ reference

我试图理解为const引用double分配浮点数的概念,并且如果float值更新,则double的值不变。

Bottom|Left

输出:

float d = 2.0;
const double & f = d;
d = 3.0;
std::cout << d << " " << f << std::endl;

这背后的原因是什么。

但是,当我们将引用变量设置为与其他变量相同的类型时,不会出现此问题。

1 个答案:

答案 0 :(得分:8)

  

但是,当我们将参考变量设置为与其他变量相同的类型时,不会出现此问题

这就是重点;您不能直接将引用绑定到具有不同类型的对象。

鉴于const double & f = d;,将从double构造一个临时d,然后将其绑定到引用fd上的修改与临时文件无关;它们是两个不相关的对象。这就是为什么在打印df时得到不同结果的原因。

BTW:只有对const的左值引用和右值引用可以绑定到临时对象,因此const double & f = d;double && f = d;可以正常工作。无法将对非const的左值引用绑定为临时引用,因此double & f = d;将不起作用。