Раньше я объявлял функции как const, но теперь я редко, если вообще когда-либо, делаю это больше.
Основная проблема заключалась в том, что если бы я захотел изменить функцию с const на неконстантную, это означало бы, что все другие функции const, вызывающие эту функцию, также должны быть изменены на неконстантные.
Это происходило чаще, чем я думал, из-за оптимизации. Например, у меня была функция GetData (), которая использовалась для возврата указателя на данные, но позже я оптимизировал настройку данных только в том случае, если вызывается GetData () (который изменяет состояние объекта, поэтому он больше не является константой). функция).
То же самое относится и к другим функциям, которые могут выполнять некоторые вычисления без изменения состояния объекта, но в какой-то момент имеет смысл кэшировать результат, поскольку функция вызывается много раз и является узким местом.
Также на практике, по крайней мере, для моего проекта, я видел очень небольшую выгоду от объявления своих функций как постоянных.