Sobes.tech
Back to questions
Junior — Middle
84

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

Answer from AI

sobes.tech AI

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

Пример:

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

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