#include<iostream> using namespace std; class Complex { private: double real; double imag; public: Complex(double real_m = 0,double imag_m = 0) { real = real_m; imag = imag_m; } Complex operator+(Complex &co);//重载+号,实现复数相加 Complex operator-(Complex &co);//重载-号,实现复数相减 Complex operator*(Complex &co);//重载×号,实现复数相乘 Complex operator/(Complex &co);//重载/号,实现复数相除 friend Complex operator+(int i,Complex &co); //重载+号,实现实数与复数相加 friend Complex operator+(Complex co,int i); //重载+号,实现复数与实数相加 Complex operator++();//重载自增运算符,实现复数前置自增 Complex operator++(int);//重载自增运算符,实现复数后置自增 friend ostream & operator<<(ostream & output , Complex &co);//重载cout,实现直接输出复数类 friend istream & operator>>(istream & input , Complex &co); }; istream & operator>>(istream & input , Complex &co) { input>>co.real>>co.imag; return input; } Complex Complex::operator++(int) { ++real; return *this; } Complex Complex::operator++() { ++real; return *this; } Complex operator+(Complex co,int i) { Complex c; c.real = i+co.real; c.imag = co.imag; return c; } Complex operator+(int i,Complex &co) { Complex c; c.real = i+co.real; c.imag = co.imag; return c; } ostream & operator<<(ostream & output , Complex &co) { if(co.imag>0) { output<<"( "<<co.real<<"+"<<co.imag<<"i )"; }else if(co.imag==0) { output<<"( "<<co.real<<" )"; }else { output<<"("<<co.real<<co.imag<<"i)"; } return output; } Complex Complex::operator+(Complex &co) { Complex c; c.real = real + co.real; c.imag = imag + co.imag; return c; } Complex Complex::operator-(Complex &co) { Complex c; c.real = real - co.real; c.imag = imag - co.imag; return c; } Complex Complex::operator*(Complex &co) { Complex c; c.real = real*co.real-imag*co.imag; c.imag = imag*co.real-real*co.imag; return c; } Complex Complex::operator/(Complex &co) { Complex c; c.real = (double)((real*co.real+imag*co.imag)/(co.real*co.real+co.imag*co.imag)); c.imag = (double)((imag*co.real-real*co.imag)/(co.real*co.real+co.imag*co.imag)); return c; } int main() { Complex c1(1,3); Complex c2(2,3); Complex c3; c3 = c1+c2; cout<<c1<<" + "<<c2<<" = "<<c3<<endl; c3 = c1-c2; cout<<c1<<" - "<<c2<<" = "<<c3<<endl; c3 = c1*c2; cout<<c1<<" * "<<c2<<" = "<<c3<<endl; c3 = c1/c2; cout<<c1<<" / "<<c2<<" = "<<c3<<endl; c3 = 3+c1; cout<<" 3 "<<" + "<<c1<<" = "<<c3<<endl; c3 = c1 + 3; cout<<c1<<" + "<<" 3 "<<" = "<<c3<<endl; cout<<c1<<"前置自增后为:";cout<<++c1<<endl; cout<<c1<<"后置自增后为:";cout<<c1++<<endl; cin>>c1; return 0; }