[over.inc] (original) (raw)

An increment operator functionis a function named operator++.

If this function is a non-static member function with no parameters, or a non-member function with one parameter, it defines the prefix increment operator++for objects of that type.

If the function is a non-static member function with one parameter (which shall be of typeint) or a non-member function with two parameters (the second of which shall be of typeint), it defines the postfix increment operator++for objects of that type.

When the postfix increment is called as a result of using the++operator, theintargument will have value zero.126

[ Example

:

struct X { X& operator++(); // prefix ++a X operator++(int); // postfix a++ };

struct Y { }; Y& operator++(Y&); // prefix ++b Y operator++(Y&, int); // postfix b++

void f(X a, Y b) { ++a; // a.operator++(); a++; // a.operator++(0); ++b; // operator++(b); b++; // operator++(b, 0);

a.operator++(); // explicit call: like ++a; a.operator++(0); // explicit call: like a++; operator++(b); // explicit call: like ++b; operator++(b, 0); // explicit call: like b++; }

end example

]

A decrement operator functionis a function named operator--and is handled analogously to an increment operator function.