#include <iostream>
using namespace std;class Complex
{int real;int vir;
public:Complex(){}Complex(int a,int b):real(a),vir(b){}void show(){cout << real << "+" << vir << "i" << endl;}//成员函数版的运算符重载Complex operator+(Complex &a){//temp用于存储运算的临时结构Complex temp;temp.real = this->real+a.real;temp.vir = this->vir+a.vir;//运算结束把结果返回return temp;}//成员函数版重载*运算符//a*bComplex operator*(const Complex &a){Complex temp;temp.real=this->real*a.real;temp.vir=this->vir*a.vir;return temp;}//成员函数版<运算符重载//a3<a2bool operator<(Complex &a2){if(this->real==a2.real){return this->vir<a2.vir;}else {return this->real<a2.real;}}//给重载-运算符的全局函数添加友元的声明friend Complex operator-(Complex &c1,Complex &c2);friend bool operator>(Complex &a1,Complex &a2);friend ostream &operator<<(ostream &out,Complex &c1);friend istream &operator>>(istream &in,Complex &c1);};
//使用全局函数重载-运算符
Complex operator-(Complex &c1,Complex &c2)
{Complex temp;temp.real = c1.real-c2.real;temp.vir = c1.vir-c2.vir;return temp;
}
//全局函数实现>运算符的重载
bool operator>(Complex &a1,Complex &a2)
{//如果两个类对象的实部相等,判断虚部if(a1.real==a2.real){return a1.vir>a2.vir;}else {return a1.real>a2.real;}
}
//重载输出<<
ostream &operator<<(ostream &out,Complex &c1)
{out<<c1.real<<'\t'<<c1.vir<<endl;return out;
}
//重载输入>>
istream &operator>>(istream &in,Complex &c1)
{in>>c1.real;in>>c1.vir;return in;
}int main()
{Complex c1;Complex c2;cin>>c1;cin>>c2;cout<<c1<<c2;return 0;
}