Sobes.tech
Junior — Middle
112

Wie kann man den Zustand innerhalb einer als konstant deklarierten Methode modifizieren?

Antwort von AI

sobes.tech KI

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

Пример:

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

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