more effective C++条款六解析

本文详细解析了前置递增与后置递增的区别,包括它们在操作符重载中的实现方式及其对UPInt类的影响。强调了后置递增返回常量的原因,并指出在相同行为下建议使用前置递增以提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

区分前置increment与后置increment

区分前置与后置++,首先明确他们的操作符重载带来的写法上的不同:

class UPInt
{
public:
	UPint& operator++() {*this+=1;return *this}
	const UPInt operator++(int) { UPInt oldValue=*this;++(*this);return oldValue;}
}
值得注意的就是两个地方,一就是操作符重载的形式后置的++会在后面添加int,虽然没有被使用。

第二个值得注意的是operator++(int)返回的是一个const 因为类似UPInt++++的行为是不被允许的(内置类型int 也不允许++++,另外这样就算可以也会造成不明确,只会加一次,所以说返回const UPInt)。

从代码中我们可以发现,后置的效率显示式没有前置的高的,所以在程序行为一致的情况下,建议使用的是前置的++。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值