Назад к вопросам
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