C++ const引用的用法与坑

C++中的const引用允许绑定到非常量对象、字面值或表达式,但不能用于修改所绑定对象。初始化常量引用时,表达式结果能转换成引用类型即可。当const引用绑定到其他类型时,会创建临时对象。尽管const引用限制了修改途径,但绑定的原始对象仍可能通过其他方式改变。
摘要由CSDN通过智能技术生成

C++中const引用(reference to const)有一些特殊的用法,需要大家注意。对于普通引用,必须在初始化时绑定到一个类型一致的具名对象上。但const引用可以绑定到非常量对象、字面值、表达式,甚至其他可转换的类型上(类型不要求一致)。其中涉及临时对象的生成,对临时对象的修改不会反应到原始对象上,一定要注意。下面详细介绍。

本文参考C++ Primer第2章的相关示例对其需要注意的地方进行补充。

可以把引用绑定到const对象上,就像绑定到其他对象上一样,我们称之为对常量的引用,或const引用。与普通引用不同的是,对常量的引用不能被用来修改它所绑定的对象:

const int ci = 1024;
const int &r1 = ci;     // 正确:引用及其绑定的对象都是常量
r1 = 42;                // 错误:r1是对常量的引用
int &r2 = ci;           // 错误:试图让一个非常量引用指向一个常量对象

因为不允许直接为ci赋值,当然也就不能通过引用去改变ci。因此,对r2的初始化是错误的。假设该初始化合法,则可以通过r2来改变它引用对象的值,这显然是不正确的。

与普通引用的初始化不同,在初始化常量引用时,允许用任意表达式作为初始值,只要该表达式的结果能转换成引用的类型即可。尤其,允许为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值