Описание тега const
В информатике const-корректность - это форма корректности программы, которая касается правильного объявления объектов как изменяемых или неизменных. Этот термин в основном используется в контексте C или C++ и берет свое название от const
Ключевое слово в этих языках.
Идея const
-ness не означает, что переменная, хранящаяся в памяти компьютера, не записывается. Скорее, const
-ness - это конструкция времени компиляции, которая указывает, что может делать программист, а не обязательно то, что он может делать.
Кроме того, метод может быть объявлен как const
, В этом случае this
указатель внутри такого метода имеет const ThisClass* const
тип, а не ThisClass* const
тип. Это означает, чтоconst
методы для этого объекта нельзя вызывать изнутри такого метода, а также нельзя изменять переменные-члены. В C++ переменная-член может быть объявлена как mutable
, указывая, что это ограничение не распространяется на него. В некоторых случаях это может быть полезно, например, для кэширования, подсчета ссылок и синхронизации данных. В этих случаях логическое значение (состояние) объекта не изменяется, но объект не является физически постоянным, поскольку его побитовое представление может измениться.
Стандарт C++11 добавляет дополнительные примечания о значении const
при использовании в стандартной библиотеке в отношении доступа к потокам и возможных изменений этих const
объекты.
Подробнее о правильности здесь.