1 概念
类型名 & 引用名 = 某变量名;
比如:
int & r = n; // r引用了n,r的类型是int &
某个变量的引用,等价于这个变量,相当于该变量的一个别名。
引用只能引用变量,不能引用常量和表达式。
T & 类型的引用或T类型的变量可以用来初始化const T & 类型的引用。
const T 类型的常变量和const T & 类型的引用则不能用来初始化T & 类型的引用,除非进行强制类型转换。
2 举例
例1:
int n = 7;
int & r = n;
r = 4;
cout << r; // 输出4
cout << n; // 输出4
n=5;
cout << r; // 输出5
初始化后,它就一直引用该变量,不会再引用别的变量。
例2:
double a = 4, b = 5;
double & r1 = a;
double & r2 = r1; // r2也引用a
r2 = 10;
cout << a << endl; // 输出10
r1 = b; // 用b对r1进行赋值,而r1并没有引用b
cout << a << endl; // 输出5
例3:
void swap(int & a, int & b)
{
int tmp;
tmp = a; a = b; b = tmp;
}
int n1, n2;
swap(n1, n2); // n1,n2的值被交换