C++ primer 十 引用变量

        C++新增了一种复合类型一引用变最。引用是己定义的变量的别名(另一个名称)。例如,如果将twain 作为clement变量的引用,则可以交替使用twain和clement来表示该变量。

创建引用变量

        C和C++使用&符号来指示变簸的地址。C++给&符号赋予了另一个含义,将其用來声明引用。例,要将rodents作为rats变量的别名,可以这样做:

int rats;

int & rodents = rats; // makes rodents an alias for rats

        其中,&不是地址运算符,而是类型标识符的一部分。就像声明中的char*指的是指向char的指针一样, int &指的是指向im的引用。上述引用声明允许将rats和rodents互换——它们指向相N的值和内存单元, 程序表明了这一点。

#include<iostream>
int main()
{
using namespace std;
int rats=101;
int &rodents=rats;
cout<<"rats= "<<rats;
cout<<", rodents="<<rodents<<endl;
rodents++;
cout<<"rats= "<<rats;
cout<<", rodents="<<rodents<<endl;

cout<<"rats address="<<&rats;
cout<<", rodents address="<<&rodents<<endl;

return 0;
}

运行结果:

       从中可知,rats和rodents的值和地址都相同(具体的地址和显示格式随系统而异)。将rodents加1将影响这两个变量。更准确地说,rodents++操作将一个有两个名称的变最加1。

        对于C语言用户而言,首次接触到引用时可能也会有些困惑,因为这些用户很自然地会想到指针,但它们之间还是有区别的。例如,可以创建指向rats的引用和指针:

int rats = 101;

int & rodents = rats; // rodents a reference

int * prats = &rats; // prats a pointer

        这样,表达式rodents和*prats都可以同rats互换,而表达式&rodents和prats都可以同&rats互换。从这一点來说,引用看上去很像伪装表示的指针(其中,*解除引用运算符被隐式理解)。实际上,引用还是不同于指针的。除了表示法不同外,还有其他的差别。例如,差别之一是,必须在声明引用时将初始化, 而不能像指针那样,先声明,再赋值:

int rat; 

int & rodent;

rodent = rat; //No, you can't do this.

注意:必须在声明引用变量时进行初始化。

        引用更接近const指针,必须在创建时进行初始化,一但与某个变量关联起来,就将一直效忠于它。 也就是说:

int & rodents = rats;

实际上是下述代码的伪装表示:

int * const pr = &rats;

其中,引用rodents扮演的角色与表达式*pr相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值