01./* 02.* 程式的著作權和版本聲明部分 03.* Copyright (c)2013, 煙台大學電腦學院學生 04.* All rightsreserved. 5.* 檔案名稱: complex.cpp 06.* 作 者:趙冠哲 07.* 完成日期:2013年4月19日 08.* 版本號碼: v1.0 09.* 輸入描述: 10.* 問題描述: 11.*/#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,Complex &c2); friend Complex operator*(Complex &c1,Complex &c2); friend Complex operator/(Complex &c1,Complex &c2); friend Complex operator+(const double &a,Complex &c2); friend Complex operator+(Complex &c1,const double &a); friend Complex operator-(Complex &c1); void display();private: double real; double imag;};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 &c1,Complex &c2){ Complex c; c.real=c1.real-c2.real; c.imag=c1.imag-c2.imag; return c;}Complex operator*(Complex &c1,Complex &c2){ Complex c; c.real=c1.real*c2.real-c1.imag*c2.imag; c.imag=c1.imag*c2.real+c1.real*c2.imag; return c;}Complex operator/(Complex &c1,Complex &c2){ Complex c; c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); return c;}Complex operator+(const double &a,Complex &c2){ return Complex(a+c2.real,c2.imag);}Complex operator+(Complex &c1,const double &a){ return Complex(c1.real+a,c1.imag);}Complex operator-(Complex &c1){ return Complex(-c1.real,-c1.imag);}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(); c3=1.66+c2; cout<<"1.66+c2="; c3.display(); c3=c1+1.57; cout<<"c1+1.66="; c3.display(); cout<<"c3=-c1="; c3=-c1; c3.display(); return 0;}
運行結果;