4.6.2 引用的特点
作为目标变量的别名,对引用的任何操作都等价于对目标变量的操作,同时,声明一个引用,并不是新定义了一个变量,只表示该引用名是目标变量名的一个别名,因此引用本身不占存储单元,编译器不会给引用分配存储单元。所以对引用的取地址,返回结果即是目标变量的内存地址,见代码4.14。
代码4.14 对引用的赋值和取址操作Reference
<—————————————文件名:example414.cpp——————————————> 01 #include<iostream> 02 int main() 03 { 04 using namespace std; 05 int num=5; 06 int&refNum=num;//声明一个引用,必须在声明时初始化 07 refNum=6;//改写引用refNum即是改写变量num 08 cout<<"num:"<<num<<",地址:"<<&num<<endl; 09 //引用的地址即是变量地址,同一实体 10 cout<<"refNum:"<<refNum<<",地址:"<<&refNum<<endl; 11 return 0; 12 }
输出结果如下所示。
num:6,地址:0012FF7C refNum:6,地址:0012FF7C
【代码解析】代码第6行,refNum是int型变量num的引用,因此,对refNum的赋值,其实就是对num的赋值,“refNum=6;”等价于“num=6;”,通过对refNum和num的取址操作可以更容易理解引用的本质,引用refNum和目标变量num对应的是同一块内存。
一个变量可以有多个引用,就像一个人可以有多个别名一样,但在引用声明时,如果在一行内声明多个引用,应注意&符号的使用,如下所示。
int&refNum1=num,refNum2=num;上述语句中,refNum2不是num的引用,而是一个int型的变量,并用num对其初始化,正确的写法如下所示。 int&refNum1=num,&refNum2=num;