首页 > 编程知识 正文

c 重载双目运算符,单目和双目运算顺序

时间:2023-05-03 15:33:38 阅读:226507 作者:2986

重载加法运算符,实现对象的直接加法运算。例如,下面这个feetinches类:

class FeetInches{private: int feet; int inches; //对feet和inches的值进行调整 void simplify();public: FeetInches(int f=0, int i=0) { feet = f; inches = i; simplify(); } void setData(int f,int i) { feet = f; inches = i; simplify(); } int getFeet(){return feet;} int getInches(){return inches;} //重载加法运算符 FeetInches operator+(const FeetInches &right) { FeetInches temp; temp.feet = this->feet + right.feet; temp.inches = this->inches + right.inches; temp.simplify(); return temp; }};

其中simplify函数实现对feet和inches的调整,具体实现如下:

void FeetInches::simplify(){ if(inches >= 12) { feet+=inches/12; inches = inches%12; }else if(inches < 0) { feet-=abs(inches)/12 + 1; inches = 12 - abs(inches)%12; }} 注意:

在上述的重载函数中,函数首先定义了一个局部对象temp,用于存储当前对象和形参对象相加运算的结果,然后返回temp,并复制给等号左边的对象。

当执行两个feetinches对象的加法运算时,将自动调用上面类中的重载函数,例如下面两句的意思完全相同:

FeetInches length1(3,5),length2(1,2),length3; length3 = length1 + length2; length3 = length1.operator+(length2); //意义和上句一样 任何一个双目运算符V被重载之后,当执行如下形式的二元运算时:

obj1 V obj2

都完全等价于:obj1.operator B (obj2)

也就是对象obj调用函数成员operator B,其中obj2作为函数实参。

主函数测试:

//重载加法双目运算符int main(){ FeetInches length1(3,5),length2(1,2),length3; length3 = length1 + length2; cout <<"the data of the length3 is:"<< endl; cout<<"feet: "<<length3.getFeet()<<endl; cout<<"inches: "<<length3.getInches()<<endl; return 0;}

输出结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。