4.
用运算符重载设计复数类,实现复数的+、-、*、/和<<运算
#include<iostream> using namespace std; class Complex { private: double o;//a是实部,b是虚部 double p; public: Complex(){}; ~Complex(){}; Complex(double a_,double b_):o(a_),p(b_){} friend Complex operator +(Complex &a,Complex &b); friend Complex operator -(Complex &a,Complex &b); friend Complex operator *(Complex &a,Complex &b); friend Complex operator /(Complex &a,Complex &b); Complex gonge();//共轭复数 void display(Complex &a); }; Complex operator +(Complex &a,Complex &b) { double A,B; A=a.o+b.o; B=a.p+b.p; return Complex(A,B); } Complex operator -(Complex &a,Complex &b) { double A,B; A=a.o-b.o; B=a.p-b.p; return Complex(A,B); } Complex operator *(Complex &a,Complex &b) { double A; double B; A = a.o*b.o - a.p*b.p; B = a.p*b.o + a.o*b.p; return Complex(A,B); } Complex operator /(Complex &a, Complex &b) { double fenmu; Complex A; Complex B; B = b.gonge(); A = a*B; fenmu = b.o*b.o + b.p*b.p; return Complex(A.o / fenmu, A.p / fenmu); } void Complex::display(Complex &a) { cout << a.o << "+"; cout << a.p << "i" << endl; } Complex Complex::gonge() { return Complex(this->o,-(this->p)); } int main() { Complex h(2,1),q(1,2),c; c = h + q; c.display(c); c = h - q; c.display(c); c = h * q; c.display(c); c = h / q; c.display(c); }