12週目のオンサイト実践プロジェクト-プロジェクト1-3-複数クラスの演算子の再ロードを実現


/*copyright(c)2016.         
 * All rights reserved,
 *     :text.Cpp
 *   :  
 *     :2016 5 12 
 *    :vc++6.0
 *    :        ,          +、-、*、/,            
           (            ,        “    ”)。    
  (2)    ,  +、-、*、/      ,    double       。 Complex c; 
 double d; c+d d+c    “ d     d    c  ”,  -、*、/     。
 */
 #include<iostream>
 using namespace std;
 class Complex
{
public:
    Complex(){real=0;imag=0;}
    Complex(double r,double i){real=r; imag=i;}
    friend Complex operator+(const Complex &c1,const Complex &c2);
    friend Complex operator-(const Complex &c1,const Complex &c2);
    friend Complex operator*(const Complex &c1,const Complex &c2);
    friend Complex operator/(const Complex &c1,const Complex &c2);


    friend Complex operator+(const Complex &c1,double &d);
    friend Complex operator-(const Complex &c1,double &d);
    friend Complex operator*(const Complex &c1,double &d);
    friend Complex operator/(const Complex &c1,double &d);
    void display();
private:
    double real;
    double imag;
};
//        
Complex operator+(const Complex &c1,const Complex &c2)
{
    return Complex(c1.real+c2.real,c1.imag+c2.imag);
}
Complex operator-(const Complex &c1,const Complex &c2)
{
    return Complex(c1.real-c2.real,c1.imag-c2.imag);
}
Complex operator*(const Complex &c1,const Complex &c2)
{
    return Complex(c1.real*c2.real,c1.imag*c2.imag);
}
Complex operator/(const Complex &c1,const Complex &c2)
{
    return Complex(c1.real/c2.real,c1.imag/c2.imag);
}

/*----------------------------------------------------------------*/
Complex operator+(const Complex &c1,double &d)
{
    return Complex(c1.real+d,c1.imag);
}
Complex operator-(const Complex &c1,double &d)
{
    return Complex(c1.real-d,c1.imag);
}
Complex operator*(const Complex &c1,double &d)
{
    return Complex(c1.real*d,c1.imag);
}
Complex operator/(const Complex &c1,double &d)
{
    return Complex(c1.real/d,c1.imag);
}
void Complex::display()
{
    cout<<"("<<real<<","<<imag<<")"<<endl;
}

int main()
{
    Complex c1(3,4),c2(5,-10),c3,c4;
    double d(2.32);
    cout<<"c1=";
    c1.display();
    cout<<"c2=";
    c2.display();
    c3=c1+c2;
    cout<<"c1+c2=";
    c3.display();
    c3=c1-c2;
    cout<<"c1-c2=";
    c3.display();
    c3=c1*c2;
    cout<<"c1*c2=";
    c3.display();
    c3=c1/c2;
    cout<<"c1/c2=";
    c3.display();
    cout<<"****************"<<endl;


    c4=c1+d;
    cout<<"c1+d=";
    c4.display();
    c4=c1-d;
    cout<<"c1-d=";
    c4.display();
    c4=c1*d;
    cout<<"c1*d=";
    c4.display();
    c4=c1/d;
    cout<<"c1/d=";
    c4.display();
    return 0;
}
<img src="http://img.blog.csdn.net/20160512191940999?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
     :              。
    :c+d    d+c      ,             ,                 ,            ,        。