这里会写一点关于引用的相关知识,如右值引用等,以及一些关于引用的使用案例和场景,讨论引用和指针间的关系。
引用可以直接粗暴的理解为别名,通过起别名的方式,可以方便很多场景下的参数传递,替代一部分指针的作用,毕竟指针如果不熟练的话还是会出现很多问题的。 下面可以看一段代码。(来自菜鸟教程)
#include <iostream>
using namespace std;
// 函数声明
void swap(int& x, int& y);
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值 */
swap(a, b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
// 函数定义
void swap(int& x, int& y)
{
int temp;
temp = x; /* 保存地址 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 x 赋值给 y */
return;
}
可以清楚的看到,我们是将a和b两个数传进了swap,由于swap的参数列表用的是引用的形式,所以我们相当于给a取了个别名叫x,给b取了个别名为y,在函数的内部,调用了x和y的别名,实现了两个数的交换。
在这里我们成功的实现了本来是使用指针来实现的内容。
所谓右值引用,就是绑定在右值上的引用,如 int &&a = 20
。