Overload prefix ++ for Point : overload unary operator « Operator Overloading « C++ Tutorial






#include <iostream>
using namespace std;

class Point {
  int x, y;
public:
  Point() {} // needed to construct temporaries
  Point(int px, int py) {
    x = px;
    y = py;
  }

  void show() {
    cout << x << " ";
    cout << y << "\n";
  }

  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 call
}

// Overload prefix ++ for Point.
Point Point::operator++()
{
  x++;
  y++;

  return *this;
}

int main()
{
  Point ob1(10, 20), ob2( 5, 30), ob3(90, 90);

  ob1.show();
  ob2.show();

  ++ob1;
  ob1.show(); // displays 11 21

  ob2 = ++ob1;
  ob1.show(); // displays 12 22
  ob2.show(); // displays 12 22

  ob1 = ob2 = ob3; // multiple assignment
  ob1.show(); // displays 90 90
  ob2.show(); // displays 90 90

  return 0;
}
10 20
5 30
11 21
12 22
12 22
90 90
90 90








10.8.overload unary operator
10.8.1.Overloading ++
10.8.2.Overloading the increment operator
10.8.3.Overload the ++ unary operator
10.8.4.Overload the postfix version of ++.
10.8.5.Demonstrate prefix and postfix ++
10.8.6.Overload prefix ++ for Point
10.8.7.Lvalues and rvalues
10.8.8.Using a Friend to Overload ++ or – –