Esta pregunta está inspirada en una pregunta sobre finalen java .
En C / C ++, ¿debería usarlo constsiempre que sea posible?
Sé que ya hay una pregunta relacionada sobre el uso consten parámetros . Desafortunadamente, esa pregunta y sus respuestas no responden completamente a mi pregunta, porque solo se trata de parámetros de función, pero también me gustaría saber sobre otros casos (por ejemplo, variables locales).
Además, casi todas las respuestas a esa pregunta dicen que deberíamos usarla constporque contiene información útil sobre la accesibilidad de las variables. Pero esto parece estar en conflicto con una respuesta sobre el uso de final en Java, que finalpuede ser superfluo si no contiene información adicional, por lo que debe omitirse para mantener el código corto y limpio.
Entonces, ¿debería usarlo constsiempre que sea posible? Si es así, ¿por qué los consejos para constC ++ son diferentes de los consejos para finalJava?
fuente

finalyconstno tienes las mismas garantías.Personalmente,
constme lleva muy poco tiempo escribir, y muy poco tiempo leer, generalmente mucho menos de lo que se necesita para verificar si algún código muta la variable, y en realidad me impide escribir errores (¿alguien alguna vez incrementó su iterador final por accidente? Etc)También encuentro que ser estricto sobre el uso de const me guía hacia un mejor código de otras maneras, como crear funciones de ayuda para hacer una inicialización no trivial.
fuente
No voy a estar de acuerdo con los otros carteles y le recomiendo que no use el nivel superior
consten variables y parámetros locales. (Las referencias y punteros a constante, es decirconst T&, son diferentes, y debe usarlos para la corrección en todo momento cuando sea apropiado).Las ventajas del nivel superior
constson:Las desventajas son:
No se puede usar en variables "pseudoconst", es decir, variables que se inicializan de alguna manera más complicadas que la construcción directa, pero que no se modifican después, por ejemplo, usando
getline:Evita la optimización de movimiento en la llamada a la función y el retorno:
He trabajado en una base de código donde
constse usaba mucho el local , y no lo encontré útil en absoluto, sin embargo, llenó el código con pesadas sutiles como se indicó anteriormente. Personalmente prefiero adoptar una política general de modificación de variables tan raramente como sea posible, y hacer que las funciones sean lo suficientemente pequeñas como para que el uso de una variable sea obvio, e incluso si se modifica, la complejidad de la función es lo suficientemente baja como para que no -problema.fuente
consten los locales: porque evita modificaciones técnicas, no solo modificaciones conceptuales.La
constpalabra clave debe usarse para variables locales, al igual que los parámetros. Es útil porque:constdebería tomar solo un segundo para escribir, así que no es gran cosa.Tenga en cuenta que no hay una respuesta correcta / incorrecta aquí. En su enlace, el respondedor que tuvo la mayor cantidad de votos argumentados
finalno debe usarse localmente. Sin embargo, el siguiente respondedor lo recomendó encarecidamente.Si su función es simple y trivial , no debe agregar
constporque todos entienden su intención. Sin embargo, si la lógica en su función no es trivial, debe usar la palabra clave. Recuerde, hay poco que perder.fuente