Sobes.tech
Назад к вопросам
Junior — Middle
83

Каким образом можно модифицировать состояние внутри метода, объявленного как константный?

Ответ от нейросети

sobes.tech AI

В C++ метод, объявленный как константный (с ключевым словом const), не может изменять состояние объекта, то есть не может изменять нестатические поля класса. Однако есть способ модифицировать состояние внутри такого метода — использовать ключевое слово mutable для полей класса. Поля, объявленные как mutable, могут изменяться даже внутри константных методов.

Пример:

class Example {
    mutable int counter = 0; // можно изменять в const методах
public:
    void foo() const {
        counter++; // изменение mutable поля внутри const метода
    }
};

Таким образом, mutable позволяет хранить изменяемое состояние, например, для кэширования или подсчёта вызовов, не нарушая константность интерфейса.