引用和const的关系

今天回顾了下effective C++,这真的是一本神书。自以为看懂,其实远非这么简单。


今天看到一个const 与引用的扯不清的关系。看我能不能扯清。


首先看一段代码

int a = 2;
const int &b = 3;
b = 3;
cout << b << endl;

这里注意了,如果改成下面的代码

int a = 2;
int &b = 3;
b = 3;
cout << b << endl;

是没法通过的。涉及到一个概念叫做常量引用,3是一个常量,只有常量引用才可以引用。其中的问题在于,编译器是为3申明了一个临时变量,把b做为临时变量的引用,如果后面的赋值为赋到有一个临时变量上,这是行不通的。所以把非const 引用申明为常量的引用。


int a = 2;
const int &b = a;
a = 3;
cout << b << endl;

这段代码是行得通的,而且b现在修改为3,就表明这里的const引用只是形式上的,并不是逻辑上,这部分在effective C++上有讲。下回我补上。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值