#include <iostream.h>
#include<conio.h>
class Point
{
int x, y;
public:
Point() {}
Point(int px, int py)
{
x = px;
y = py;
}
void show()
{
cout << x << " ";
cout << y << "\n";
}
Point operator=(Point op2);
friend Point operator++(Point &op);
friend Point operator-(Point &op);
};
// Overload assignment for Point.
Point Point::operator=(Point op2)
{
x = op2.x;
y = op2.y;
return *this; // Le., return object that generated call
}
// Now a friend; use a reference parameter.
Point operator++(Point &op)
{
op.x++;
op.y++;
return op;
}
// Make op- a friend; use reference.
Point operator-(Point &op)
{
op.x--;
op.y--;
return op;
}
void main()
{
clrscr();
Point ob1(10, 20), ob2;
ob1.show();
++ob1;
ob1.show(); // displays 11 21
ob2 = ++ob1;
ob2.show(); // displays 12 22
-ob2;
ob2.show(); // displays 11 21
getch();
}