#include "iostream.h" //不这样使用头文件会报错fatal error C1001: INTERNAL COMPILER ERROR //不知为什么 //using namespace std; class complex { public: complex() { real=imag=0; } complex(double r, double i) { real = r; imag = i; } complex operator +(const complex &c); complex operator -(const complex &c); complex operator *(const complex &c); complex operator /(const complex &c); friend void print(const complex &c); private: double real, imag; }; inline complex complex::operator +(const complex &c) { return complex(real + c.real, imag + c.imag); } inline complex complex::operator -(const complex &c) { return complex(real - c.real, imag - c.imag); } inline complex complex::operator *(const complex &c) { return complex(real * c.real - imag * c.imag, real * c.imag + imag * c.real); } inline complex complex::operator /(const complex &c) { return complex((real * c.real + imag + c.imag) / (c.real * c.real + c.imag * c.imag), (imag * c.real - real * c.imag) / (c.real * c.real + c.imag * c.imag)); } void print(const complex &c) { if(c.imag<0) cout<<c.real<<c.imag<<'i'; else cout<<c.real<<'+'<<c.imag<<'i'; } class interge{ public: interge(int i=0):num(i){} interge& operator++() { cout<<"前置++"<<endl; this->num++; return *this; } const interge operator++(int) { cout<<"后置++"<<endl; interge tem; tem=this->num; this->num++; return tem; } friend interge operator-(const interge &a,const interge &b)//重载为友元函数 { interge c; c.num=a.num-b.num; return c; } interge operator+(const interge &a)//重载为成员函数 { interge tem; tem.num=(*this).num+a.num; return tem; } friend void _print(const interge &m) { cout<<m.num<<endl; } private: int num; }; int main() { complex c1(2.0, 3.0), c2(4.0, -4.0), c3; c3 = c1 + c2; cout<<"c1+c2="; print(c3); c3 = c1 - c2; cout<<endl; cout<<"c1-c2="; print(c3); cout<<endl; c3 = c1 * c2; cout<<"c1*c2="; print(c3); c3 = c1 / c2; cout<<endl; cout<<"c1/c2="; print(c3); cout<<endl; interge obj(3),add(4),out; out=obj+add-obj; _print(out); interge result=++obj; _print(result); return 0; }