Junior — Middle
Comment peut-on modifier l'état à l'intérieur d'une méthode déclarée comme constante?
sobes.tech IA
Réponse de l'IA
В C++ метод, объявленный как константный (с ключевым словом const), не может изменять состояние объекта, то есть не может изменять нестатические поля класса. Однако есть способ модифицировать состояние внутри такого метода — использовать ключевое слово mutable для полей класса. Поля, объявленные как mutable, могут изменяться даже внутри константных методов.
Пример:
class Example {
mutable int counter = 0; // можно изменять в const методах
public:
void foo() const {
counter++; // изменение mutable поля внутри const метода
}
};
Таким образом, mutable позволяет хранить изменяемое состояние, например, для кэширования или подсчёта вызовов, не нарушая константность интерфейса.