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

В информатике const-корректность - это форма корректности программы, которая касается правильного объявления объектов как изменяемых или неизменных. Этот термин в основном используется в контексте C или C++ и берет свое название от const Ключевое слово в этих языках.

Идея const-ness не означает, что переменная, хранящаяся в памяти компьютера, не записывается. Скорее, const-ness - это конструкция времени компиляции, которая указывает, что может делать программист, а не обязательно то, что он может делать.

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

Стандарт C++11 добавляет дополнительные примечания о значении const при использовании в стандартной библиотеке в отношении доступа к потокам и возможных изменений этих const объекты.

Подробнее о правильности здесь.