powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объясните, зачем нужен mutable?
4 сообщений из 4, страница 1 из 1
Объясните, зачем нужен mutable?
    #34888522
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Граждане умные, объясните мне плз, зачем нужен модификатор mutable?
Т.е. я знаю, что он нужен в случае если вдруг понадобиться в const-методе изменить переменную класса.

Но вот зачем это нужно? Это костыль, или "результат вдумчивого проектирования" (с) Страуструп ?

Если можно - от пример из жизни был бы очень кстати...
А то есть мнение что нужен он на случай хренового дизайна, и если понадобился mutable - то можно и const с метода убрать :(
...
Рейтинг: 0 / 0
Объясните, зачем нужен mutable?
    #34888551
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmdeiГраждане умные, объясните мне плз, зачем нужен модификатор mutable?
Т.е. я знаю, что он нужен в случае если вдруг понадобиться в const-методе изменить переменную класса.

Но вот зачем это нужно? Это костыль, или "результат вдумчивого проектирования" (с) Страуструп ?

Если можно - от пример из жизни был бы очень кстати...
А то есть мнение что нужен он на случай хренового дизайна, и если понадобился mutable - то можно и const с метода убрать :(

Кеширование данных. Допустим у тебя есть метод, мама не горюй, по времени вычисления, который читает данные объекта и выдает некий результат. Потом у тебя свойства объекта меняют, и вычисляют опять этот метод. Но, может быть такая ситуация, что у этого объекта есть несколько использующих его объектов, и случилось, так, что один из объектов запросил этот метод, а после него запросил второй. Данные не менялись, зачем считать по новой? Для этого данные результат вычисления в объекте кешируется в некоторой, допусим переменной и взводиться флаг, что мол - посчитал. Если же свойства объекта будут меняться, то флаг будет сброшен, мол считай заново.

Примеры? ну допустим объект-враппер, для обращения к базе данных, которая хрензнаетгде находится. Можно селекты кешировать, пока только они идут.
...
Рейтинг: 0 / 0
Объясните, зачем нужен mutable?
    #34888587
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у Майрса есть правило к этой теме, по поводу логически-константных методов (в противоположность побайтово-константным)
...
Рейтинг: 0 / 0
Объясните, зачем нужен mutable?
    #34890700
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amdei пишет:
> Граждане умные, объясните мне плз, зачем нужен модификатор mutable?
> Т.е. я знаю, что он нужен в случае если вдруг понадобиться в
> const-методе изменить переменную класса.
>
> Но вот зачем это нужно? Это костыль, или "результат вдумчивого
> проектирования" (с) Страуструп ?

Это не костыль, если не клинический случай.
Вполне возможно например наличие в классе
каких-то данных, которые связаны сугубо с реализацией класса
и не являются непосредственно данными, которые служат для
реализации функциональности этого класса. Или не являются таковыми
с точки зрения пользователя (клиента) класса.

Например, некие performance counter-ы, требуемые для замеров
производительности. Они могут меняться в даже константном методе.
Ничего плохого в этом нет. Но делать только из-за них метод не-const
просто неправильно.

Другой пример - наличие внутри класса какаой-то структуры, которую нужно
maintain-ить. Например, дерева, которое надо балансировать. Возможно делать
это на чтении не очень хорошо, но у разработчиков могут быть другие соображения,
например, то, что при этом maintenance перераспределиться память и ссылки,
возвращаемые из метода, будут невалидны после него. А если провести это
во время чтения, можно вернуть уже ссылку на новую память.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объясните, зачем нужен mutable?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]