Lvalues and rvalues : overload unary operator « Operator Overloading « C++ Tutorial






#include <iostream>

class number {
public:
  number(int i = 0) : value(i) {

  }
  operator int() const {
    return value;
  }

  number& operator=(const number& n) {
    std::cout<<"=";
    value = static_cast<int>(n);
    return *this;
  }
private:
  int value;
};

number operator+(const number& x, const number& y)
{
  std::cout<<"+";
  return number(static_cast<int>(x) + static_cast<int>(y));
}

int main()
{
  number a[10], b(42);
  number* p;
  a;           // lvalue
  a[0];        // lvalue
  &a[0];       // rvalue
  *a;          // lvalue
  p;           // lvalue
  *p;          // lvalue
  10;          // rvalue
  number(10);  // rvalue
  a[0] + b;    // rvalue
  b = a[0];    // lvalue
}
+=








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 – –