Ключевое слово mutable полезно, когда вам нужно изменять состояние объекта в константном контексте, например, для кеширования результатов или реализации ленивых вычислений. Однако, следует использовать его с осторожностью, чтобы не нарушать принципы инкапсуляции и сокрытия информации.
В этом примере у нас есть класс
Counter с двумя членами: count и mutableCount. Метод increment объявлен как константный — он не должен изменять состояние объекта. Однако, поскольку mutableCount объявлен с ключевым словом mutable, мы можем изменять его значение внутри константного метода increment.В функции
main мы создаем константный объект counter и вызываем метод increment три раза. Значение count остается неизменным, так как его нельзя изменить в константном методе, в то время как значение mutableCount увеличивается на 1 с каждым вызовом метода increment.
