Просто мое свидетельство.
Несколько лет назад, я все еще был против использования сопзЬ, только из-за ограничений в области дизайна и написания длинных подписей функции ... и так далее ...
Но один из моих руководителей проектов всегда настаивал , все время, напоминая мне: «Вы должны использовать функцию const, это позволяет избежать несчастных случаев и делать не-смысл».
И в один прекрасный день я столкнулся с ошибкой . Дни после дней после дня ... Кошмар. Дизайн был слишком большим для меня, так что я мог понять его в целом. Я искал напрасно, пока не решил, что потерялся.
Затем я потратил два дня на переопределение ВСЕ функции, которые должны быть const. Я имею в виду это, два дня. (Повторная компиляция была длинной, так как она составляла 5 миллионов строк кода проекта).
А потом: просто я нашел ошибку ... скорее, компилятор нашел ошибку для меня: в методе, подобном getter, который должен был дать мне предпочтительный размер элемента управления gui, код фактически вычислял размер, но он также кэшировал свой размер и обновлял его размер ... Таким образом, изменяя объект.
Теперь, иногда я забываю поставить const. Но если я это заметлю, я исправлю это.
Кроме того, вы можете перегружать функции только для определения функции 'const'. Это позволяет, например, оператору индекса, который автоматически возвращает элемент в режиме read-only *, если объект объявлен как 'const'. [* только для чтения все еще применяется только во время компиляции. 'const' не может ничего делать во время выполнения] – Mephane
+1 для const-correctness. никто не упомянул об этом –
Я думаю о вашем утверждении «const как значение по умолчанию, и изменен для непостоянного». Похоже на крайнее положение, но я постараюсь почувствовать, что я думаю об этом. –