Je lisais mon livre C++ (Deitel) quand je suis tombé sur une fonction pour calculer le volume d'un cube. Le code est le suivant:
double cube (const double side){
return side * side * side;
}
L'explication pour utiliser le qualificatif "const" était celle-ci: "Le const qualifié doit être utilisé pour appliquer le principe du moindre privilège, en disant au compilateur que la fonction ne modifie pas le côté variable".
Ma question: l'utilisation de "const" n'est-elle pas redondante/inutile ici puisque la variable est passée par valeur, donc la fonction ne peut pas la modifier de toute façon?
Le qualificatif const
empêche le code à l'intérieur de la fonction de modifier le paramètre lui-même. Lorsqu'une fonction est plus grande que la taille triviale, une telle assurance vous aide à lire et à comprendre rapidement une fonction. Si vous savez que la valeur de side
ne changera pas, vous n'avez pas à vous soucier de garder une trace de sa valeur au fil du temps pendant que vous lisez. Dans certaines circonstances, cela pourrait même aider le compilateur à générer un meilleur code.
Un nombre non négligeable de personnes le font naturellement, le considérant généralement comme un bon style.
Vous pouvez faire quelque chose comme ça:
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
}