我试图理解将float赋值给const引用double的概念,如果浮点值更新,则double的值不会改变.
float d = 2.0;
const double & f = d;
d = 3.0;
std::cout << d << " " << f << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出:
3 2
Run Code Online (Sandbox Code Playgroud)
这背后的原因是什么?
但是,当我们将引用变量设置为与另一个变量相同的类型时,不会出现此问题.
但是,当我们将引用变量设置为与另一个变量相同的类型时,不会出现此问题
这才是重点; 你不能直接绑定不同类型的对象引用.
给定const double & f = d;,临时double将构造d,然后绑定到引用f.修改d与临时无关; 他们是两个不相关的对象.这就是为什么你会得到不同的结果时,打印出来d和f.
BTW:只有左值引用为const和右值引用可以绑定到暂时的,所以const double & f = d;和double && f = d;正常工作.Lvalue引用非const不能绑定到临时,那么double & f = d;就行不通了.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |