キューブの体積を計算する関数に出会ったとき、C++の本(Deitel)を読んでいました。コードは次のとおりです。
double cube (const double side){
return side * side * side;
}
「const」修飾子の使用に関する説明は次のとおりです。「const修飾は、最小限の特権の原則を実施するために使用し、関数が変数側を変更しないことをコンパイラーに伝えます」。
私の質問:変数が値で渡されているため、ここでは「const」の冗長/不必要な使用ではないので、関数はそれを変更できませんか?
const
修飾子は、関数内のコードがパラメーター自体を変更するのを防ぎます。関数が自明なサイズよりも大きい場合、このような保証は、関数をすばやく読み、理解するのに役立ちます。 side
の値が変わらないことがわかっている場合は、読みながら値を経時的に追跡する必要はありません。状況によっては、これはコンパイラがより良いコードを生成するのに役立つこともあります。
それは一般的に良いスタイルだと考えると、自明ではない人の数は当然のこととしてこれを行います。
次のようなことができます:
int f(int x)
{
x = 3; //with "const int x" it would be forbidden
// now x doesn't have initial value
// which can be misleading in big functions
}