Зачем нужен const?
Понятно, что const спасает, если значение нельзя менять. Но у некоторых переменных тоже нельзя менять значение. И при этом их невозможно заполнить сразу. Например, если они читают значения из файла. Таким образом, const создаёт ложную надежду, что если сущность не const, то её можно менять.
Понятно, что даже переменную можно сделать неизменной, завернув в метод или перегрузив оператор. И написать большими буквами. Таким образом, надежда на изменяемость остальных переменных будет неложной. Но не слишком ли дорого оборачивать всё неизменное в метод? Да и большие буквы будут создавать впечатление инициации на старте.
Понятно, что const также экономит ресурсы, но в эпоху производительных машин уже не актуально.