//可以把引用绑定到const对象上,称之为对常量的引用(reference to const),简称为常量引用
int main()
{
const int ci = 1024;
const int &r1 = ci;//正确,引用及其对象都是常量
r1 = 42;//错误,ri 是对常量的引用
int &r2 = ci;//错误,非常量引用不能指向一个常量对象
//一种引用的类型必须与其引用对象的类型一致的例外情况
//初始化常量引用时允许用任意表达式作为初始值,只要这个表达式的结果能转换成引用的类型即可
int i = 42;
const int &r3 = i;//正确,初始化常量引用,绑定到了一个普通int对象
const int &r4 = r3 * 2;//正确
int &r5 = r4 * 2;//错误,r5不是一个常量引用
//常量引用可以引用一个非const对象
//结果是这个非const的对象不能通过常量引用来改变它的值
int &r6 = i;
const int &r7 = i;
r6 = 0;//正确,通过r6改变它引用的对象的值
r7 = 0;//错误,r7是常量引用,不允许通过常量引用改变它的对象的值
}