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

xiaoxiao2021-02-27  174

首先,先看一个例子:

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法则,这样会使得代码增加。

转载请注明原文地址: https://www.6miu.com/read-12678.html

最新回复(0)