Вот несколько замечательных статей и книг, которые я нашел, объясняющих преимущества использования const:
Могу ли я предложить вам следующую максиму?
Если объект / переменная, которую можно квалифицировать, имеет постоянную, то она должна быть. В худшем случае это ничего не будет стоить. В лучшем случае вы будете документировать роль объекта / переменной в вашем коде, и это даст компилятору возможность еще больше оптимизировать ваш код.
Некоторые компиляторы пренебрегают использованием потенциала оптимизации с использованием «const», и это заставляет многих экспертов пренебрегать использованием постоянных параметров по значению, когда они могут использоваться. Эта практика требует большей строгости, но она не будет вредной. В худшем случае вы ничего не теряете, но и ничего не получаете, а в лучшем случае вы выигрываете, используя этот подход.
Для тех, кто, кажется, не понимает полезности const в параметре по значению функции / метода ... вот краткий пример, который объясняет, почему:
.cpp
void WriteSequence(int const *, const int);
int main()
{
int Array[] = { 2, 3, 4, 10, 12 };
WriteSequence(Array, 5);
}
#include <iostream>
using std::cout;
using std::endl;
void WriteSequence(int const *Array, const int MAX)
{
for (int const * i = Array; i != Array + MAX; ++i)
cout << *i << endl;
}
Что бы произошло, если бы я удалил const перед int MAX, и я написал MAX + 1 внутри вот так?
void WriteSequence(int Array[], int MAX)
{
MAX += MAX;
for (int * i = Array; i != Array + MAX; ++i)
cout << *i << endl;
}
Ну, ваша программа зависнет! Теперь, почему кто-то пишет "MAX + = MAX;" ? Возможно, человеческая ошибка, может быть, программист не чувствовал себя хорошо в тот день или, возможно, программист просто не знал, как писать код на C / C ++. Если бы вы имели const, код даже не скомпилировался бы!
Безопасный код - это хороший код, и добавление «const», когда он у вас есть, ничего не стоит!
Вот ответ из другого поста на очень похожий вопрос:
"const бессмысленно, когда аргумент
передается по значению, так как вы не будете
изменить объект вызывающего. "
Неправильно.
Речь идет о самодокументировании вашего кода
и ваши предположения.
Если в вашем коде работает много людей
на нем и твои функции
нетривиально, тогда вы должны отметить
"const" все, что вы
Можно. При написании промышленной силы
код, вы всегда должны предполагать, что
ваши коллеги психопаты пытаются
чтобы вы могли любым способом, которым они могут
(тем более что это часто ты сам
в будущем).
Кроме того, как кто-то упоминал
раньше это могло бы помочь компилятору
немного оптимизировать вещи (хотя это
длинный выстрел).
Вот ссылка: ответ .