c++常量引用,通过被引用变量修改数据无法同步到引用

正常情况下被引用的对象改变,常量引用的值也跟着改变。i和j是同一个对象,所以是同步的:

int i = 42;
const int& j = i;
i = 43;
cout << j << endl;
cout << i << endl;
// i == j == 42;

但存在类型转换时,常量引用绑定的是double到int隐式转换后的临时int对象。i和j不是一个对象,所以数据不同步:

 

double i = 42.5;
const int& j = i;//发生隐式转换,j引用了临时int对象
i = 43;
cout << j << endl;
cout << i << endl;
// j == 42; i == 43;

因为上述道理,所以下面的i和j是同一个对象,所以是同步的:

int i = 42.5;//发生隐式转换,i引用了临时int对象
const int& j = i;
i = 43;
cout << j << endl;
cout << i << endl;
// i == j == 42;

 

posted @ 2022-09-01 20:11  陈百川  阅读(108)  评论(0)    收藏  举报