类包括类的声明,在这里给出构造函数、析构函数、赋值‘=’、+、-、*、/四种运算,以及友元函数实现的输入和输出流。
#ifndef COMPLEX_H_INCLUDED
#define COMPLEX_H_INCLUDED
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
class Complex{
public:
Complex(){Re = Im = 0;}
Complex(double r){Re = r;Im = 0;}
Complex(double r,double i){Re = r;Im = i;}
~Complex(){};
void getr(){return Re;}
void geti(){return Im;}
void putr(double a){Re = a;}
void puti(double b){Im = b;}
Complex operator = (Complex ob){Re = ob.Re; Im = ob.Im;}
Complex operator + (Complex& ob);
Complex operator - (Complex& ob);
Complex operator * (Complex& ob);
Complex operator / (Complex& ob);
private:
double Re,Im;
friend istream& operator >>(istream& in,Complex& m);
friend ostream& operator <<(ostream& out,Complex& m);
};
#endif // COMPLEX_H_INCLUDED
接下来给出具体运算的定义,按照复数的四则运算,可直接得出如下:(其中除法要注意定义的ob是被除数)
Complex Complex::operator +(Complex& ob){
Complex p;
p.Re = Re + ob.Re;
p.Im = Im + ob.Im;
return p;
}
Complex Complex::operator -(Complex& ob){
Complex p;
p.Re = Re - ob.Re;
p.Im = Im - ob.Im;
return p;
}
Complex Complex::operator /(Complex& ob){
Complex p;
double i;
i = ob.Re * ob.Re + ob.Im * ob.Im;
p.Re = (Re * ob.Re + Im * ob.Im)/i;
p.Im = (Re * ob.Im - Im * ob.Re)/i;
return p;
}
Complex Complex::operator *(Complex& ob){
Complex p;
p.Re = Re * ob.Re - Im * ob.Im;
p.Im = Re * ob.Im + Im * ob.Re;
return p;
}
istream&
operator >>(istream& in,Complex& m){
double a,b;
in>>a>>b;
m.putr(a);
m.putr(b);
return in;
}
ostream&
operator <<(ostream& out,Complex& m){
if(m.Re != 0) out<<m.Re;
if(m.Im != 0) out<<"+"<<m.Im<<"i";
return out;
}
如有错误,还请各位斧正!