Назад к вопросам
Middle
91
questionbank
Как перегрузить постфиксный и префиксный инкремент в C++?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
// Перегрузка префиксного инкремента
MyClass& operator++() {
// Увеличение состояния объекта
value++;
// Возврат ссылки на измененный объект
return *this;
}
// Перегрузка постфиксного инкремента
MyClass operator++(int) {
// Создание временной копии объекта до увеличения
MyClass temp = *this;
// Увеличение состояния объекта
value++;
// Возврат временной копии (значения до инкремента)
return temp;
}
Различие в сигнатурах: постфиксная версия имеет фиктивный параметр int, чтобы отличать ее от префиксной.
Постфиксная версия возвращает копию объекта до изменения, префиксная - ссылку на измененный объект.
Пример использования:
MyClass obj(5);
// Префиксный инкремент: сначала увеличение, потом использование значения
MyClass result_prefix = ++obj; // obj становится 6, result_prefix = 6
// Постфиксный инкремент: сначала использование значения, потом увеличение
MyClass result_postfix = obj++; // result_postfix = 6, obj становится 7