Mega Code Archive

 
Categories / C++ Tutorial / Operator Overloading
 

Make op-- a friend; use reference

#include <iostream> using namespace std; 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; // i.e., 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; } int main() {   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   return 0; } 10 20 11 21 12 22 11 21