c++设计中可以利用重载避免隐式类型转换

首先,先看一个例子:

class UPInt {

public:

UPInt();

UPInt(int value);

...

}

const UPInt operator +(const UPInt& object1,const UPInt& object2);

UPInt object1,object2;

UPInt object3=object1+object2;//调用opeator +

这样肯定是正确的,但是,中间产生了临时对象,临时对象的构造跟析构是会影响效率的。

现在考虑如下:

object3=object1+10;

object3=10+object2;

这样也能成功,编译器会利用10构造一个临时对象,但这明显不是我们想要的消耗。

解决方法就是重载+ 号操作符

如:

const UPInt operator +(UPInt& object1,int ints);

...

但是 const UPInt operator +(int i1,int i2);//错误,c++规定,每一个“重载操作符”必须获得至少一个用户自定义类型(类)。

总结:可以借由函数重载技术避免隐式类型转换。但是,不要忘记80-20法则,这样会使得代码增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值