我试图理解为const引用double分配浮点数的概念,并且如果float值更新,则double的值不变。
Bottom|Left
输出:
float d = 2.0;
const double & f = d;
d = 3.0;
std::cout << d << " " << f << std::endl;
这背后的原因是什么。
但是,当我们将引用变量设置为与其他变量相同的类型时,不会出现此问题。
答案 0 :(得分:8)
但是,当我们将参考变量设置为与其他变量相同的类型时,不会出现此问题
这就是重点;您不能直接将引用绑定到具有不同类型的对象。
鉴于const double & f = d;
,将从double
构造一个临时d
,然后将其绑定到引用f
。 d
上的修改与临时文件无关;它们是两个不相关的对象。这就是为什么在打印d
和f
时得到不同结果的原因。
BTW:只有对const的左值引用和右值引用可以绑定到临时对象,因此const double & f = d;
和double && f = d;
可以正常工作。无法将对非const的左值引用绑定为临时引用,因此double & f = d;
将不起作用。