Files
2025-10-25 03:02:53 +03:00

2.2 KiB

[over.inc]

12 Overloading [over]

12.4 Overloaded operators [over.oper]

12.4.7 Increment and decrement [over.inc]

1

#

An increment operator function is a function named operator++.

If this function is a non-static member function with no non-object 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 non-object 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, theint argument will have value zero.107

[Example 1: 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]

2

#

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

107)107)

Callingoperator++ explicitly, as in expressions likea.operator++(2), has no special properties: The argument tooperator++ is2.