#include using namespace std; class Point { private: int x, y; public: Point() {} Point(int px, int py) { x = px; y = py; } void show() { cout << x << " "; cout << y << endl; } Point operator+(Point op2); Point operator-(Point op2); Point operator=(Point op2); Point operator++(); }; // Overload + for Point. Point Point::operator+(Point op2) { Point temp; temp.x = op2.x + x; temp.y = op2.y + y; return temp; } // Overload - for Point. Point Point::operator-(Point op2) { Point temp; // notice order of operands temp.x = x - op2.x; temp.y = y - op2.y; return temp; } // Overload asignment for Point. Point Point::operator=(Point op2) { x = op2.x; y = op2.y; return *this; // i.e., return object that generated the call } // Overload prefix ++ for Point. Point Point::operator++() { x++; y++; return *this; } int main() { Point ob1(1, 2), ob2(3, 4), ob3(5, 6); ob1.show(); // displays 1 2 ob2.show(); // displays 3 4 cout << endl; ++ob1; ob1.show(); // displays 2 3 cout << endl; ob2 = ++ob1; ob1.show(); // displays 3 4 ob2.show(); // displays 3 4 cout << endl; ob1 = ob2 = ob3; // multiple assignment ob1.show(); // displays 5 6 ob2.show(); // displays 5 6 getchar(); return 0; }