C++中的const限定符(2)——对const的引用

1、可以把引用绑定到const对象上,此时该引用必须是对常量的引用(简称常量引用。对常量的引用不能被用作修改它所绑定的对象。

const int a=5;

const int &b=a;

2、允许一个常量引用绑定非常量的对象、字面值(非常量引用不行)甚至表达式(非常量引用不行),就连类型都可以不同,只要该表达式的结果能转换成引用的类型即可。

double z=3.14;

const int& a=z;           //常量引用绑定非常量的对象且类型不同

const int& b=5;            //常量引用绑定字面值

const int& c=2*a;         //常量引用绑定表达式

   出现上述情况的原因在于:上述情况下,引用实际上绑定的是一个临时量对象而非对象本身,甚至有时这个对象根本就不存在,为了初始化成功,编译器只能生成一个未命名的临时对象用于被绑定。

   这一点也就解释了为什么非常量引用不能进行上述的操作。因为上述情况下,引用要绑定的是一个临时量,而正如上一节说的,临时量是const类型的,这时用非常量引用绑定常量对象显然不合法。另一方面,从使用者的角度来说,我们既然使用引用,显然是想可以通过引用改变对象的值,但这里却无法做到。

3、常亮引用绑定类型相同的非常量对象时,可以通过改变对象的值改变引用的值,这是显而易见的。

int z=10;

const int& w=z;

cout<<w<<endl;             //10

 z=5;

cout<<w<<endl;            //5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值