C++ 为什么双参考值不';在C+;中指定给浮点变量时,t将发生变化+;

C++ 为什么双参考值不';在C+;中指定给浮点变量时,t将发生变化+;,c++,reference,C++,Reference,我试图理解将浮点赋值给const reference double的概念,如果浮点值更新,double的值不会改变 float d = 2.0; const double & f = d; d = 3.0; std::cout << d << " " << f << std::endl; 这背后的原因是什么 但是,当我们将引用变量设置为与另一个变量相同的类型时,就看不到这个问题 但是,当我们将引用变量设置为与另一个变量相同的类型时,就看不

我试图理解将浮点赋值给const reference double的概念,如果浮点值更新,double的值不会改变

float d = 2.0;
const double & f = d;
d = 3.0;
std::cout << d << " " << f << std::endl;
这背后的原因是什么

但是,当我们将引用变量设置为与另一个变量相同的类型时,就看不到这个问题

但是,当我们将引用变量设置为与另一个变量相同的类型时,就看不到这个问题

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

给定
const double&f=d
,将从
d
构造一个临时的
双精度
,然后绑定到引用
f
。对
d
的修改与临时文件无关;它们是两个无关的物体。这就是为什么打印出
d
f
时会得到不同的结果

顺便说一句:只有对const和rvalue的左值引用可以绑定到temporary,因此
constdouble&f=d
双精度&f=d工作正常。对非常量的左值引用不能绑定到临时,那么
double&f=d不起作用

 3 2