1.概念:const 引用指的是指向const对象的引用。
2.const引用的右值可以是常数,但是普通的引用是不行的。
int &re1 = 42(x)
const int &re2 = 42 (正确)
3.先看一个可行的语句:
double dval = 3.14; double dval = 3.14;
const int &ri = dval; (可行) int &ri = dval ; (不可行)
编译器会先把这些代码转换成如下的形式的编码:
int temp = dval;
const int &ri = temp
如果ri不是const引用,那么可以给ri赋一新值。这样做我们达不到预期的效果去修改原先的dval,但是相反会修改对应的temp。所以我们在这里还是使用const引用,提醒用户说这是const引用,别指望通过修改引用来修改对应的原值。
总之:非const引用只能绑定到与该引用同类型的对象。const引用则可以绑定到不同但相关的类型的对象或绑定到右值。