引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样,其声明方法:类型标识符& 引用名=目标变量名。如:int a; int& ra=a;
说明:
1、&在此不是求地址运算,而是起标识作用(即类型标识符)指明了目标变量的类型;
2、声明引用时,必须同时对其进行初始化,而且引用的初始化应是一个左值(是一个对象,可以取到它的地址);但是如果对一个const T&的初始化不必是一个左值,甚至不必是T类型的。
如:
int a;
int& ra=a; //正确,已初始化
int& ra; //错误,没有初始化
int& ra=2;//错误,要求左值
const int& ra=2;//正确,对于const T&的不一定必须是左值
3、引用声明完毕,相当于目标名有两个名称即目标名和引用名,且不能把该引用名作为其他变量的名字。而且声明一个引用并不是重新定义了一个变量,他只表示该引用是目标变量名的一个别名,故引用本身不是一种数据类型、不占存储单位、系统也不会给引用分配存储单元,因此对引用求地址就是对目标变量求地址(&ra与&a相等),对饮用进行操作运算就是对目标变量进行操作运算(ra++与a++结果相同)。
4、可以利用引用描述一个函数,以使该函数能够改变传递来的变量的值,如:
void change(int& aa) { aa++; }
void f()
{
int x=1;
change(x); //x=2;
}