引用、强制类型转换、临时变量的关系
double a = 9.9;
int &b = a;
很明显上面的代码编译会报错,C++引用时不能跨数据类型。
double a = 9.9;
int &b = (int)a;
这时编译代码仍会报错,错误提示,我们需要改成如下格式:
double a = 9.9;
const int &b = (int)a;
此时编译通过,正常运行,但是修改 a 的值,b值并不会跟着改变。
查阅后知,(int)a 强制类型转换时,产生了临时变量,用于保存数值 9 。即 b 引用的并不是 a ,而是一个 int 类型的临时变量,而临时变量要赋给一个引用类型时, 我们必须要用const修饰。我们可以认为临时变量都被const修饰。

浙公网安备 33010602011771号