C++运算符重载

来源:互联网 发布:怎么查找淘宝评论过的 编辑:程序博客网 时间:2024/04/17 07:36
#include <iostream.h>


class Complex
{
public:
Complex(double r=0.0,double i=0.0)
{
real=r;
imag=i;
}


friend Complex operator + (Complex c1,Complex c2);
friend Complex operator + (Complex c1,double r);
friend Complex operator + (double r,Complex c1);


friend Complex operator * (Complex c1,Complex c2);
friend Complex operator * (Complex c1,double r);
friend Complex operator * (double r,Complex c1);


void display();


private:
double real;
double imag;
};


Complex operator + (Complex c1,Complex c2)
{
return Complex(c1.real+c2.real,c1.imag+c2.imag);
}


Complex operator + (Complex c1,double d)
{
return Complex(c1.real+d,c1.imag);
}


Complex operator + (double d,Complex c2)
{
return Complex(d+c2.real,c2.imag);



Complex operator * (Complex c1,Complex c2)
{
return Complex((c1.real*c2.real-c1.imag*c2.imag),(c1.real*c2.imag+c1.imag*c2.real));
}


Complex operator * (Complex c1,double r)
{
return Complex(c1.real*r,c1.imag*r);
}
Complex operator * (double r,Complex c1)
{
return Complex(r*c1.real,r*c1.imag);
}


void Complex::display()
{
cout<<"("<<real<<","<<imag<<")"<<endl;
}


int main()
{
Complex c1(5,10),c2(1.5,2.5),c3;
cout<<"c1=";
c1.display();


cout<<"c2=";
c2.display();


c3=c1+c2;
cout<<"c1+c2=";
c3.display();


c3=c1*c2;
cout<<"c1*c2=";
c3.display();


return 0;
}