变量的引用,对象的常引用,以及对const型数据的总结(一)

在说引用之前,我们现在先复习学习一下,关于变量的常引用。
在c++中,变量的引用就是给变量起别名,因此引用又称为别名,建立“引用”就是为一个变量再起另一个名字,以便在需要的时候可以方便,间接地引用该变量,这就是引用名称的由来。
如下:int a; int &b = a;这就声明了b是a的引用,即是a的别名,&是引用声明符,此时它并不代表地址,对变量声明一个引用,并不另外开辟内存单元,b和a都代表同一个内存单元。在声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量。

  • 声明一个变量的引用之后,在函数执行期间,该引用一直与其代表的变量相关联,不能再作为别的变量的引用,
int a1,a2;
int &b = a1;//使b成为变量a1的引用
int &b = a2;//又企图使b成为a2的引用是不行的。

引用并不是一种独立的数据类型, 它必须和某一种类型的数据相联系,声明引用必须指定它代表的是哪一个变量,即对它初始化。

int &b =a;//正确,指定b是整型变量a的别名。
int &b;//错误,设有指定b代表那个变量
float a; int &b =a;//错误,声明b是一个整型变量的别名,而a不是整型变量

引用与其所代表的变量共享同一内存单元,系统并不另外分配存储空间,编译系统使引用和其代表的变量具有相同的地址。
 

int a= 3;//定义整型变量a
int &b = a;//声明b是整型变量的别名
cout<<&a<<" "<<&b<<endl;//输出a和b的地址

引用的进一步说明:

  1. 不能建立void 类型的引用
  2. 不能建立引用的数组
  3. 可以将变量的引用的地址付给一个指针,此时指针指向的是原来的变量。
  4. 可以建立指针变量的引用
  5. 可以用const对引用加以限定,不允许改变该引用的值
  6. 可以用常量表达式对引用进行初始化,但此时必须用const做声明:如:int i =5; const &a = i+3;//合法  。此时编译系统是这样处理的:生成一个临时变量,用来存放该表达式的值,引用是该临时变量的别名,系统将"const &a = i+3";转换为:
    int temp = i+3;const int &a = temp;该临时变量是在内部实现的,用户不能访问临时变量。还可以用于不同数据类型的变量进行初始化(要求赋值能兼容的类型)如:double d = 3.1415;const int &a =d;,原理同上,不过数据会丢失精度。如果在上面声明引用时不用const,则会发生错误。
    为什么会发生错误呢,因为如果修改了引用的值,则临时变量的temp的值也会变为6.28,而变量d的值并未改变,这并不是用户所希望的,会产生二义性,与其修改引用的值而不能实现用户的目的,还不如不允许修改引用的值,这就是c++规定对这类引用必须加const的原因。

 

  •  

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值