c++ - ¿No es redundante "const" cuando se pasa por valor?
pass-by-value (2)
El calificador const
impide que el código dentro de la función modifique el parámetro en sí. Cuando una función es más grande que un tamaño trivial, dicha seguridad le ayuda a leer y comprender rápidamente una función. Si sabes que el valor del side
no cambiará, entonces no tienes que preocuparte de hacer un seguimiento de su valor a medida que lees. En algunas circunstancias, esto incluso podría ayudar al compilador a generar un mejor código.
Un número no trivial de personas hace esto por rutina, teniendo en cuenta que generalmente es un buen estilo.
Esta pregunta ya tiene una respuesta aquí:
- Uso de ''const'' para parámetros de función 30 respuestas
Estaba leyendo mi libro de C ++ (Deitel) cuando me encontré con una función para calcular el volumen de un cubo. El código es el siguiente:
double cube (const double side){
return side * side * side;
}
La explicación para usar el calificador "const" fue esta: "El const qualified debe usarse para hacer cumplir el principio de privilegio mínimo, diciéndole al compilador que la función no modifica el lado variable".
Mi pregunta : ¿no es aquí el uso de "const" redundante / innecesario ya que la variable se pasa por valor, por lo que la función no puede modificarlo de todos modos?
Puedes hacer algo como esto:
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
}