常量引用
“常量引用”是“对const的引用”的简称,就是对常量的引用,格式上是用const修饰引用;
常量只能由”常量引用”引用 ,但“常量引用”不是只能作为常量的引用,还可以作为变量的引用;
一个常量引用(int)绑定到另一个类型(double)的量上时,绑定的是编译器生成的临时量(一个由double量强制转换来的int型常量)
引用的对象是非常量还是常量可以决定其所能参与的操作;
int i = 8;
const int &k = 42;//常量引用,k是常量42的引用
int &d = i;//普通引用,可通过d修改i的值;
d++;//普通引用,可通过d修改i的值;
const int &j = i; //将const int&绑定到普通int对象上(),可改变i改变引用j
//j++;报错,因为j由const修饰;
const int &h = i * 1;//这里已经是常量引用,k是常量20的引用,h不会随i而变化
i++;//会改变引用j不会改变引用h;
//int &g = i * 2;错误,i*2是常量,不能用非常量引用
double pi = 3.14;
const int &f = pi;//这里,f绑定的是一个编译器生成的临时变量,等同于:
/*double pi=3.14;
const int temp = pi;
const int &f = temp;*/
pi++;//f的值不会改变,因为f绑定的是临时变量
const int c = 12;
//int &s = c;报错,不可用非常量引用绑定常量,这就是常量引用的内涵
//int &s = 12;同上
const int &s = c;