第八周任务1:实现复数类中的运算符重载

来源:互联网 发布:sql 表别名 编辑:程序博客网 时间:2024/05/16 11:42

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。

* 作    者:     杨建和                     
* 完成日期:     2012    年 04      月  9  日
* 版 本 号:       V1.0   
* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束

*/

#include<iostream>   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-(Complex &c2);      Complex operator*(Complex &c2);      Complex operator/(Complex &c2);      void display();  private:      double real;      double imag;  };  //下面定义成员函数     //复数相加: (a+bi)+(c+di)=(a+c)+(b+d)i.   Complex Complex::operator+(Complex &c2)      {        Complex c;         c.real=real+c2.real;        c.imag=imag+c2.imag;        return c;    }            //复数相减:(a+bi)-(c+di)=(a-c)+(b-d)i.         Complex Complex::operator-(Complex &c2)        {            Complex c;            c.real=real-c2.real;            c.imag=imag-c2.imag;            return c;        }              //复数相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.          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;        }              //复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i     Complex Complex::operator/(Complex &c2)   {            Complex  c;            double d=c2.real*c2.real+c2.imag*c2.imag;        c.real=(real*c2.real+imag*c2.imag)/d;           c.imag=(imag*c2.real-real*c2.imag)/d;            return c;        }     //显示函数      void Complex::display( )      {        cout<<"("<<real<<","<<imag<<"i)"<<endl;    }    //主函数int main()  {      Complex c1(3,4),c2(5,-10),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();      c3=c1*c2;      cout<<"c1*c2=";      c3.display();      c3=c1/c2;      cout<<"c1/c2=";      c3.display();      system("pause");      return 0;  }  


友元函数实现运算符的重载

#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+(Complex &c1,Complex &c2);friend Complex operator+(Complex &c1,const double &d);friend Complex operator+(const double &d, Complex &c);     friend Complex operator-(Complex &c1,Complex &c2);      friend Complex operator-(Complex &c2);      friend Complex operator*(Complex &c1,Complex &c2);      friend Complex operator/(Complex &c1,Complex &c2);       friend void display(Complex &c2);  private:      double real;      double imag;  };   };  //下面定义成员函数    //复数相加: (a+bi)+(c+di)=(a+c)+(b+d)i.   Complex operator+(Complex &c1,Complex &c2)    {        Complex c;         c.real=c1.real+c2.real;        c.imag=c1.imag+c2.imag;        return c;    }  //复数与double型数相加Complex operator+(Complex &c1,const double &d){Complex c;c.real=c1.real+d;c.imag=c1.imag;return c;}//double型与复数相加Complex operator+(const double &d, Complex &c){Complex c1;c1.real=d+c.real;c1.imag=c.imag;return c1;}        //复数相减:(a+bi)-(c+di)=(a-c)+(b-d)i.         Complex operator-(Complex &c1,Complex &c2)       {            Complex c;            c.real=c1.real-c2.real;            c.imag=c1.imag-c2.imag;            return c;        }        Complex operator-(Complex &c2){Complex c;c.real=real-c2.real ;c.imag=imag-c2.imag ;}//复数相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.         Complex operator*(Complex &c2)   {            Complex  c;            c.real=real*c2.real-imag*c2.imag;            c.imag=imag*c2.real+real*c2.imag;            return c;        }              //复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i     Complex operator/(Complex &c2)   {            Complex  c;            double d=c2.real*c2.real+c2.imag*c2.imag;        c.real=(real*c2.real+imag*c2.imag)/d;           c.imag=(imag*c2.real-real*c2.imag)/d;            return c;        }     //显示函数      void display( )      {        cout<<"("<<real<<","<<imag<<"i)"<<endl;    }    //主函数int main()  {      Complex c1(3,4),c2(5,-10),c3,c4;      cout<<"c1=";      display(c1);      cout<<"c2=";      display(c2);      c3=c1+c2;      cout<<"c1+c2=";      display(c3);      c3=c1-c2;      cout<<"c1-c2=";      display(c3);      c3=c1*c2;      cout<<"c1*c2=";      display(c3);      c3=c1/c2;      cout<<"c1/c2=";      display(c3);      c4=c1+3.14;      cout<<"c1+3.14=";      display(c4);      c4=3.14+c1;      cout<<"3.14+c1=";      display(c4);      c4=-c1;      cout<<"-c1=";      display(c4);      system("pause");      return 0;  }  


感悟:通过此程序,体会到了运算符的重载的使用方法,还有 我想说 以后就能使用 乘方 的运算符号了。。。。