Не является ли" const " избыточным при передаче по значению? [дубликат]
этот вопрос уже есть ответ здесь:
- использование 'const' для параметров функции 30 ответов
Я читал свою книгу на C++ (Deitel), когда наткнулся на функцию для вычисления объема куба. Код следующий:
double cube (const double side){
return side * side * side;
}
объяснение использования квалификатора "const" было следующим один: "квалифицированный const должен использоваться для обеспечения соблюдения принципа наименьших привилегий, сообщая компилятору, что функция не изменяет переменную сторону".
у меня вопрос: не является ли использование "const" избыточным/ненужным здесь, так как переменная передается по значению, поэтому функция не может ее изменить в любом случае?
2 ответа:
The
const
квалификатор не позволяет коду внутри функции изменять сам параметр. Когда функция больше, чем тривиальный размер, такая гарантия поможет вам быстро прочитать и понять функцию. Если вы знаете, что значениеside
не изменится, тогда вам не нужно беспокоиться о том, чтобы отслеживать его значение с течением времени, когда вы читаете. При некоторых обстоятельствах это может даже помочь компилятору создать лучший код.нетривиальное количество людей делают это как само собой, учитывая его в целом хороший стиль.