Поскольку const
является ключевым словом, оно проверяется синтаксически , но его следует использовать семантически , то есть в операциях проектирования, которые не изменяют видимое состояниевашего класса должны быть помечены как const
.
В этом и заключается основная идея ключевого слова mutable
: добавление возможности пометить элемент как , что не учитывает видимое состояние объекта , так что синтаксическая проверка соответствуетсмысловой смыслВ вашем конкретном случае, поскольку вы копируете указатель, вам даже не нужно использовать mutable
там (на самом деле это одна из слабых сторон правильной константности, так как возвращает неконстантнуюуказатель не вызывает ошибки при компиляции, даже если вы открываете дверь для изменений в вашем объекте)
В этом конкретном случае, с другой стороны, я не вижу веской причины, по которой объект мог быопубликовать его регистратор ... То есть, если не считать константности, зачем вам нужен доступ к регистратору?