(一)引用的定义

引用:类型&称为引用符号,代表别名的意思。
语法:类型& 引用变量名称 = 变量名称;

(二)区别其他&符号

1
2
3
4
5
6
7
int a = 10;
int b = 20;
int c;
c = a && b; //截断与
c = a & b; //按位与
int* p = &a; //取地址
int& x = a; //引用

(三)引用注意事项

  • 引用即别名:只是给已存在的对象起别名。
1
2
int a = 10;
int& b = a; //b是a的别名
  • 引用必须初始化,不能定义空引用;
1
int& a;		//错误用法
  • 引用的类型必须与被引用的对象类型相同。
1
2
3
int a = 10;
int& b = a; //正确类型。类型相同
char& c = a; //错误类型的引用
  • 引用本身不是一个对象,不能作为被引用的对象(没有引用的引用)。
  • 引用变量和被引用对象的空间是同一块空间。

(四)引用的使用情况

(1)常规使用

1
2
int a = 10;
int& b = a;

(2)函数形参

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
void Swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}

int main()
{
int a = 10;
int b = 20;
Swap(a, b); //java中不存在形参改变导致实参改变
return 0;
}

总结:在调用Swap函数时,实参列表会对Swap函数的形参引用进行初始化。

(3)函数返回值

1
int& Add();

返回值是int类型的引用。

(五)const与引用

常引用:const + 引用

(1)错误用法1:

1
2
3
int a = 10;
const int& b = a;
b = 20; //错误,只能读,不能修改,扩大了b的权限

(2)错误用法2:

1
2
const int a = 10;
int& b = a; //错误,扩大a的权限

随着后期深入学习,会继续完善本篇文章。