Вызываемая пользователем функция operator++ реализует префиксный и постфиксный ++ оператор. Если эта функция является нестатической функцией-членом без параметров или функцией-членом с одним параметром, она определяет оператор приращения префикса ++ для объектов этого типа. Если функция является нестатической функцией-членом с одним параметром (который должен иметь тип int) или функцией, не являющейся членом, с двумя параметрами (второй из которых должен иметь тип int), она определяет оператор постфиксного приращения ++ для объектов этого типа. тип. Когда постфиксное приращение вызывается в результате использования ++ оператора, int аргумент будет иметь нулевое значение.134 [ 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 ]
operator++ Явный вызов , как в выражениях вроде a.operator++(2), не имеет особых свойств: аргумент для operator++ is 2.