#include<iostream>
using namespace std;
template<typename T>
class Complex {
public:
Complex(T a=0, T b=0) :m_real(a), m_imag(b){
};
Complex(const Complex& c);
~Complex() {
};
T getReal() const {
return m_real; }
void setReal(T r) {
m_real = r; }
T getImag() const {
return m_imag; }
void setImag(T i) {
m_imag = i; }
Complex& operator=(const Complex& b);
public:
operator double()const {
return m_real; }
Complex& operator+=(const Complex& a);
Complex& operator-=(const Complex& a);
Complex& operator*=(const Complex& a);
Complex& operator/=(const Complex& a);
Complex& operator+(const Complex& a);
Complex operator-(const Complex& a);
Complex operator*(const Complex& a);
Complex operator/(const Complex& a);
Complex operator--();
Complex