#include <iostream>
using namespace std;
int main()
{
int a1=1;
const int &r1=1;//const引用可以绑定字面值常量
const int &ra1=a1;
//int &r2=1; 非const引用不能绑定字面值常量
int a2=a1;
//int &r2=ra1;//非const引用不能绑定const引用
int &r2=a1;
r2=ra1;//const引用可以向非const引用赋值
r2=10;//通过非const引用修改const引用
cout<<ra1<<endl;
return 0;
}
运行结果输出10.
关键是理解绑定和赋值的区别,绑定是用于引用初始化的,而赋值是初始化后的行为,所以先定义了r2,再用const引用向其赋值。
虽然const引用是常量引用,但是还是可以通过非常量引用改变他的值,这个是需要注意的。