1. 程式人生 > >定義一個複數類Complex,過載運算子“+”,使之能用於複數的加法運算。參加運算的兩個運算量可以都是類物件,也可以其中有一個是整數,順序任意。例如,c1+c2,i+c1,c1+i均合法(設i為整數,

定義一個複數類Complex,過載運算子“+”,使之能用於複數的加法運算。參加運算的兩個運算量可以都是類物件,也可以其中有一個是整數,順序任意。例如,c1+c2,i+c1,c1+i均合法(設i為整數,

#include <iostream>

#include <iomanip>

using namespace std;

class Complex

{

public:

    Complex()

    {
        real=0;
        imag=0;
    }

    Complex(double r,double i)
    {
        real=r;
        imag=i;
    }

    Complex operator+(Complex &c2);

    Complex operator+(int &i);

    friend Complex operator+(int&,Complex &);

    void display();

private:

    double real;

    double imag;

};

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

 Complex Complex::operator+(int &i)
 {
	 return  Complex(real+i,imag);
 }

Complex operator+(int &i,Complex &c)
{
	return Complex(i+c.real,c.imag);
}

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

int main()

{

    double real,imag;

    cin>>real>>imag;

    Complex c1(real,imag);

    cin>>real>>imag;

    Complex c2(real,imag);

    cout<<setiosflags(ios::fixed);

    cout<<setprecision(2);

    Complex c3=c1+c2;

    cout<<"c1+c2=";

    c3.display();

    int i;

    cin>>real>>imag;

    cin>>i;

    c3=Complex(real,imag)+i;

    cout<<"c1+i=";

    c3.display();

    cin>>i;

    cin>>real>>imag;

    c1=Complex(real,imag);

    c3=i+c1;

    cout<<"i+c1=";

    c3.display();

    return 0;

}