一、把引用t绑定到const对象上,我们称之为对常量的引用。与普通引用不同的是,对常量的引用不能被用作修改它所绑定的对象。
1 const int ci = 1023; 2 const int &r1 = ci; //正确:引用及其队友的对象都是常量 3 r1 = 42; //错误:r1是对常量的引用 4 int &r2 = ci; //错误:试图让一个非常量引用指向一个常量对象
假设4是合法的,则可以通过r2来改变它引用对象的值,这是显然错误的。
二、初始化与对const的引用
允许为一个常量引用绑定非常量的对象、字面值、甚至是一个表达式。
1 int i = 42; 2 const int &r1 = i; //正确:允许将const int&绑定到一个普通的int对象上 3 const int &r2 = 42; //正确:r2是一个常量引用 4 const int &r3 = r2*2;//正确‘:r3是一个常量引用 5 int &r4 = r1*2; //错误:r4是一个普通的非常量引用
原理:
1 double dval = 3.14; 2 const int &ri = dval;
//在编译器中 const int tenp = dval; //由双精度浮点数生产一个临时的整型常量 const int &ri = temp; //让ri绑定这个临时量