Я думаю, вы спрашиваете об обосновании, а не о конкретном языковом правиле, которое позволяет это.
Основанием для этого является то, что это делает const
переменными намного проще в использовании. Это дает типичную замену для одного общего использования #define
.
Вместо #define MAX_COUNT 211
вы можете использовать const int max_count = 211;
точно таким же образом, например, файл общего заголовка, не беспокоясь о том, куда поместить одно определение.
Вы не можете юридически изменить значение объекта const
, поэтому нет видимой разницы между наличием одного объекта и нескольких объектов с одинаковым значением.
Поскольку вы можете поместить определение const
объекта в заголовочный файл, компилятору будет просто использовать это значение непосредственно на этапе компиляции, не прибегая к такой оптимизации, чтобы отложить на исправление во время компоновки.