Sólo mi testimonio. Hace
algunos años, yo todavía estaba en contra del uso de const, sólo a causa de las limitaciones en el diseño y la escritura de firmas de función más largos ... y así sucesivamente ...
Pero uno de mis líderes del proyecto siempre insistido , todo el tiempo, recordándome: "Deberías usar la función const, evita accidentes y no tiene sentido".
Y un día me enfrenté a un imposible error para encontrar. Días después de días después de días ... Una pesadilla. El diseño era demasiado grande para mí como para poder verlo en su totalidad. Busqué en vano hasta que decidí que estaba perdido.
Luego pasé dos días redefiniendo TODAS las funciones que deberían const. Lo digo en serio, dos días. (Las recompilaciones fueron largas ya que era un proyecto de 5 millones de líneas de código).
Y luego: simplemente encontré el error ... más bien el compilador encontró el error para mí: en un método getter-like, que debería haberme dado el tamaño preferido de un control gui, el código en realidad estaba computando el tamaño, pero también estaba almacenando en caché su tamaño y actualizando su tamaño ... Modificando así el objeto.
Ahora, a veces me olvido de poner const. Pero si lo noto, lo corrijo.
Además, puede sobrecargar funciones solo en el calificador 'const' de la función. Esto permite, por ejemplo, un operador de índice que devuelve automáticamente el elemento en una forma de solo lectura * si el objeto se declara como 'const'. [* read-only aún solo se aplica en tiempo de compilación, sin embargo. 'const' no puede hacer nada en tiempo de ejecución] – Mephane
+1 para const-correctness. nadie más lo mencionó –
Estoy pensando en su declaración "const como el valor predeterminado, y mutable para no constante". Parece una posición extrema, pero intentaré sentir lo que pienso al respecto. –