在C++语言中,“引用”相当于给变量起了一个别名。C语言并没有引用这个概念,C语言用指针实现类似的功能。
引用的语法:
类型 & 引用名 = 某变量名;
例如:
int n = 4;
int & r = n;
在上面的例子中,r 作为 n 的一个引用,相当于 n 有了一个新的名字 r 。换句话说,r 和 n 是等价的。
例如:
#include <iostream>
using namespace std;
int main ()
{
int n = 7;
int & r = n;
r = 4;
cout << r << endl;
cout << n << endl;
n = 5;
cout << r << endl;
}
编译,运行:
# g++ a.cc && ./a.out
4
4
5
从这个例子中,我们可以看出,变量 n 和它的引用 r 是一回儿事。
使用应用需要注意3点事项:
1 定义引用时,一定要将其初始化为某个变量的引用;
2 一旦初始化后,它就一直引用该变量,不会再引用别的变量了,从一而终。
3 只能引用变量,不能引用常量和表达式。
再例如:
#include <iostream>
using namespace std;
int main ()
{
int a = 7, b = 9;
int & r1 = a;
int & r2 = r1; // r2也引用了a
r2 = 10; // 等于 a = 10;
cout << a << endl;
r1 = b; // r1 没引用 b,此语句等于a=b;
cout << a << endl;
}
编译,运行:
# g++ a.cc && ./a.out
10
9
再来看一下,常引用。其特点是,不能通过常引用,修改其引用变量的内容。
常引用的语法:
const 类型 & 引用名 = 某变量名;
例如:
int n = 100;
const int & r = n;
r = 200; // 编译错
n = 300; // 没问题