定义:
为对象起的别名,其本身不是一个对象。
初始化:
由于引用是对象的别名,而其本身不是一个对象,所有就不存在引用的引用。一般在初始化变量时,初始值会被拷贝到新创建的对象中,然而引用是将它和初始值绑定在一起,而不是拷贝其值,一旦初始化完成,引用将和初始值对象一直绑定在一起,无法绑定到另一个对象上,所以引用必须初始化。
基本使用:
int i = 0; //定义一个变量
int &j = i; //引用,和i绑定,之后所有对j的操作,就相当于是对i的操作
int &m = 10; //错误,引用必须初始化为对象
一般来说,引用的类型要和它绑定的对象类型严格匹配,并且引用只能绑定到对象上,不能绑定到字面值或表达式的计算结果。
常量引用:
使用const修饰的引用,一般形式为 const int &j = i;
const int i = 0;
const int &j = i; //常量引用
int m = 0;
const &n = m; //也是合理的常量引用
这里的常量既可以绑定到常量对象上,也可以绑定到非常量对象上,常量引用的意义在于不能通过引用j来修改绑定对象i的值,至于绑定对象到底是不是一个常量,和引用没有一点关系。多用来作为方法的形参,用来限制方法内部不能修改引用的实参。