Почему изменяемый спецификатор классифицируется как спецификатор класса хранения, а не как спецификатор?

Когда mutable спецификатор используется в объявлении нестатического члена данных, данные являются изменяемыми независимо от того, рассматривается ли остальная часть объекта как const. С этим фактом у нас может сложиться впечатление, что mutable Спецификатор такой же вещи, как const классификатор, который оказывается неправдой. На самом деле, язык классифицирует mutable спецификатор как спецификатор класса хранения. Это довольно нелогично, потому что mutable не указывает продолжительность хранения.

Каковы причины этого дизайнерского решения?

Что сделало бы это менее логичным, чем казалось бы, если бы mutable был классификатор?

Какие преимущества делает его спецификатором класса хранилища?

15

Решение

резюме-классификаторs изменять / ограничивать семантику объекта; mutable не. Быть частью этого типа было бы излишним практически во всех сценариях, при этом требуя больше абзацев о преобразовании указателей и т. Д.

Таким образом было решено сделать это Децл спецификатор это не Тип Спецификатор. поскольку const может привести к тому, что объект будет помещен в защищенную от записи память, mutable может привести к тому, что объект не будет помещен в такое хранилище, предполагая, что это хранения класса спецификатор.

11

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]