#include <iostream>

using namespace std;

class Complex {

private :
 float x, y;
 float buff_x, buff_y;
 static int count;

public :

 Complex(float a, float b) : x(a),y(b)
 {
  count++;

  buff_x = x;
  buff_y = y;
 }
 Complex() : x(0), y(0), buff_x(0), buff_y(0)
 {
  count++;
 }

 void Print()
 {
  cout << \"(\" << x << \",\" << y << \")\" << endl;
 }

 Complex& Add(const Complex &a)
 {
  buff_x = x + a.x;
  buff_y = y + a.y;
 
  return *this;
 }


 Complex& Mul(const Complex &b)
 {
  buff_x = x * b.x;
  buff_y = y * b.y;

  return *this;
 }

 static int GetCount() { return count;}

 ~Complex(){count--;}

 void operator=(const Complex& rhs)
 {
  x = rhs.buff_x;
  y = rhs.buff_y;

 };

};

int Complex::count = 0;

int main(void)
{
 Complex com1(1.0, 2.0), com2(3.0, 4.0);
 Complex com3;

 com1.Print();
 cout << endl;

 com2.Print();
 cout << endl;

 com3 = com1.Add(com2);

 com3.Print();
 cout << endl;

 Complex *pcom4 = new Complex;

 *pcom4 = com1.Mul(com2);

 pcom4->Print();
 cout << endl;
 cout << \"#complex numbers : \" << com1.GetCount() << endl;
 delete pcom4;
 cout << \"#complex numbers : \" << com1.GetCount() << endl;

 return 0;
}

 





이게 내가 연산자 오버로딩 써서 한건데... 이런방식은 괜찮나 모르겠다..