引用
引用的基本概念
引用是C++里面才有的概念。引用并不是定义了一个新的变量,它只是为一个现存变量起的别名。
例如:
int i=1; int &k=i;
k就是i的一个别名。
定义引用需要注意的地方:
- 一旦初始化完成,引用会和初始值变量一直绑定在一起,无法重新绑定到另一个变量,因此引用必须初始化。
- 引用的类型要和与之绑定的变量相匹配。
- 引用只能绑定在变量上。
- 不能定义引用的引用。
来看几个错误的例子巩固一下:
int i = 2; int& j;//错误,没有初始化 double& k = i;//错误,类型不一样 int& n = 3;//引用类型的初始值必须是一个变量,不能是字面值常量 int& o = i;//正确 int& p = o;//错误,不能定义引用的引用
但是可以在一条语句中定义多个引用。例如:
int i=2; int &j=i,&k=i;
拷贝赋值和引用赋值
其实就类似于传值和传址的区别。
下面来具体看两个代码:
#include<bits/stdc++.h> using namespace std; using gg = long long; int main() { gg i = 1;//定义了变量i,并用1初始化 gg j = i;//将变量i的值拷贝赋值给j j = 2; cout << "i = " << i << ",j = " << j; return 0; }
运行结果:
#include<bits/stdc++.h> using namespace std; using gg = long long; int main() { gg i = 1;//定义了变量i,并用1初始化 gg &j = i;//将变量i的值拷贝赋值给j j = 2; cout << "i = " << i << ",j = " << j; return 0; }
运行结果:
第一个是拷贝赋值,第二个是引用赋值。
总之一句话,引用即别名。
引用并没有创建一个新的变量,只是对原有的变量起了一个新的名字。