Перевантаження операторів інкремента та декремента (++)

#include <iostream>
using namespace std;


class Point
{
 public:
     Point operator++(int);     // постдекрементний оператор i++
     Point& operator++();       // преінкрементний оператор ++i
      
     Point operator--(int);     
     Point& operator--();   

     int x, y;
};


Point& Point::operator++()
{
     x++;
     y++;
     return *this;
}


Point Point::operator++(int)
{
     Point temp = *this;
     ++*this;
     return temp;
}


Point& Point::operator--()
{
     x--;
     y--;
     return *this;
}


Point Point::operator--(int)
{
     Point temp = *this;
     --*this;
     return temp;
}



int main()
{
     Point a;
     a.x = 2;
     a.y = 3;

     a++;
     cout << a.x << endl;
     cout << a.y << endl << endl;

     ++a;
     cout << a.x << endl;
     cout << a.y << endl << endl;

     system("pause");
     return 0;
}


3
4

4
5