首先要介绍一下引用,引用的初始化必须是对象,所谓对象就是内存中具有类型的区域。但是对于const却有例外,对于非const引用,之中类型只能绑定到与该引用同类型的对象,但是对于const引用,却可以绑定到不相关的类型或者右值
int i = 42;
const int &r = 42;
const int &r2 = r + i; //对于const引用是合法的,对于非const引用是不合法的
原因在于下面的转化
double dval = 3.14;
const int &ri = dval;
将转换为
int temp = dval;
const int &ri = temp; //进行了一次类型转换