C++基础之const引用

引用一个const对象,必须使用const引用。const引⽤也可以引⽤普通对象,因为对象的访 问权限在引⽤过程中可以缩⼩,但是不能放⼤。

接下来我们来看实例:

以上的ra对于a的引用是属于权限的放大。试想一下,被const修饰的变量a,就相当于一个常量,不可更改,然而ra的类型为int&,这别名ra可以被赋值,从而使得权限发生了放大,引起了一个错误。

下面我们看这样一段代码:

    int a=10;
    int& rb = a * 3;
	double d = 12.34;
    int& rd = d;

你可以发现它的问题吗?

首先我们介绍一下什么叫临时对象.

所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象, C++中把这个未命名对象叫做临时对象。

然后,我们需要知道使用赋值操作符‘=’时,如果右边是一个表达式,则会创建一个临时变量存储这个表达式的值。上面的a*3就是如此。而临时变量具有常性,不可更改,于是就会出现问题。

下面的double类型d的引用与上门类似。把d转化为int类型的引用时,右边的d会生成一个临时变量存储它的值,从而使其具有了常性,因而使得下面两行代码也具有了错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值