引用
定义方式
类型名 & 引用名 = 变量名
int n = 4;
int &r = n; // r引用了n, r的类型是int &
作用
某个变量的引用, 等价于这个变量, 相当于该变量的一个别名
int n = 4;
int &r = n;
r = 4;
cout << r; // 输出4
cout << n; // 输出4
n = 5;
cou t << r; // 输出5
注意事项
- 定义引用时一定要将其初始化成引用某个变量
- 初始化后, 它就一直引用该变量, 不会再引用别的变量了
- 引用只能引用变量, 不能引用常量和表达式
double a=4, b=5;
double & r1 = a;
doulbe & r2 = r1; // r2也引用了a
r2 = 10;
cout << a << endl; // 输出10
r1 = b; // r1并没有引用b,而是将b的值5赋值给了r1引用的a
cout << a << endl; //输出5
简单示例——交换两个整数
void swap(int &a, int &b){
int tmp;
tmp = a; a = b; b = tmp;
}
引用作为函数返回值
返回一个引用的变量, 可以直接进行赋值
int n=4;
int & SetValue() { return n; }
int main(){
Setvalue() = 40;
cout << n; // 输出40
return 0;
}
常引用
定义引用时,在前面加const关键字, 即为常引用
int n;
const int & r = n; // r的类型为const int &
常引用不能修改其引用内容
int n=100;
const int & r = n;
r = 200; // 编译错误
n = 300; //没问题
常引用和非常引用的转换
- const T & 和 T & 不是同一类型
- T & 类型的引用或 T 类型的变量可以用来初始化 const T & 类型的引用
- const T 类型和const T & 类型不能用来初始化 T & 类型的引用, 除非进行强制类型转换