C++程序习题-运算符重载[4.2]

    定义一个复数类Complex,重载运算符“+”, "-",“*”,“/”,使之能用于复数的加,减,乘,除。运算符重载函数作为Complex类的成员函数。编写程序,分别求两个复数之和,差,积和商。

#include <iostream>
using namespace std;

//复数类

class Complex
{
      public:
      Complex(){real = 0;imag = 0;}
      Complex(double r,double i){real = r;imag = i;}
      void display();
      Complex operator +(Complex &c2);//重载操作符+

      Complex operator -(Complex &c2);//重载操作符-

      Complex operator *(Complex &c2);//重载操作符*

      Complex operator /(Complex &c2);//重载操作符/

      private:
      double real;
      double imag;
};

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

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

Complex Complex::operator -(Complex &c2)
{
    Complex c;
    c.real = real - c2.real;
    c.imag = imag - c2.imag;
    return c;
}

Complex Complex::operator *(Complex &c2)
{
    Complex c;
    c.real = real * c2.real - imag * c2.imag;
    c.imag = imag * c2.real + real * c2.imag;
    
    return c;
}

Complex Complex::operator /(Complex &c2)
{
    Complex c;
    double temp = c2.real * c2.real + c2.imag * c2.imag;
    c.real = (real * c2.real + imag * c2.imag) / temp;
    c.imag = (imag * c2.real - real * c2.imag) / temp;
    return c;
}

int main()
{
    Complex c1(3,4),c2(5,-10),c3,c4,c5,c6;
    c3 = c1 + c2;
    c4 = c1 - c2;
    c5 = c1 * c2;
    c6 = c1 / c2;
    cout << "c1=";c1.display();
    cout << "c2=";c2.display();
    cout << "c1 + c2 ="; c3.display();
    cout << "c1 - c2=";c4.display();
    cout << "c1 * c2=";c5.display();
    cout << "c1 / c2=";c6.display();
    system("pause");
    return 0;
}


作者: chengxiaopeng   发布时间: 2010-11-22