复数类中运算符的重载(用友元函数)

来源:互联网 发布:linux设置脚本开机启动 编辑:程序博客网 时间:2024/05/18 03:04
问题:用友元函数完成运算符的重载
#include<iostream>using namespace std;class complex{private:    double x;    double y;public:    complex(){x=0,y=0;}    complex(double X,double Y){x=X,y=Y;}    friend complex operator+(complex &,complex &);    friend complex operator-(complex &,complex &);    friend complex operator*(complex &,complex &);    friend complex operator/(complex &,complex &);    void display();};complex operator+(complex &c1,complex &c2)//复数相加: (a+bi)+(c+di)=(a+c)+(b+d)i.{    complex c;    c.x=c1.x+c2.x;    c.y=c1.y+c2.y;    return c;}complex operator-(complex &c1,complex &c2)//复数相减:(a+bi)-(c+di)=(a-c)+(b-d)i{    complex c;    c.x=c1.x-c2.x;    c.y=c1.y-c2.y;    return c;}complex operator*(complex &c1,complex &c2)//复数相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.{    complex c;    c.x=(c1.x*c2.x-c1.y*c2.y);    c.y=(c1.y*c2.x+c1.x*c2.y);    return c;}complex operator/(complex &c1,complex &c2)//复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i{    complex c;    c.x=(c1.x*c2.x+c1.y*c2.y)/(c1.x*c1.x+c2.y*c2.y);    c.y=(c1.y*c2.x-c1.x*c2.y)/(c1.x*c1.x+c2.y*c2.y);    return c;}void complex::display(){    cout<<"("<<x<<","<<y<<"i)"<<endl;}int main(){    complex c1(3,5),c2(4.23,8.34),c3;    cout<<"c1+c2="<<endl;    c3=c1+c2;    c3.display();    cout<<"c1+c2="<<endl;    c3=c1-c2;    c3.display();    cout<<"c1*c2="<<endl;    c3=c1*c2;    c3.display();    cout<<"c1/c2="<<endl;    c3=c1/c2;    c3.display();    return 0;}

原创粉丝点击