Preguntas como esta tienden a fortalecer mi resolución de seguir los consejos de Dan Saks como se describe en este artículo "Conversaciones con un gurú": http://www.drdobbs.com/conversationsa-midsummer-nights-madness/184403835.
En particular, se trata de cómo la ubicación de la const cambia las cosas. (*) Me doy cuenta de que es muy poco probable que convierta a alguien de escribir const int ...
a int const ...
, pero dicho esto, hay una razón por la que prefiero hacer esto último.
(*) incluyendo una nota que indica que el cambio no tiene ningún efecto al cambiar la const con la declaración de tipo desde el principio.
Se convierte en muy fácil lectura, porque para cualquier instancia de la palabra const
en una declaración, todo a la izquierda de la misma es el tipo de lo que es constante, y todo a la derecha es lo que realmente es const.
Considérese una declaración como:
int const * * const pointerToPointer;
Los primeros estados const
que los números enteros al final de la cadena de puntero const son, y deben ser encontrados en * * const pointerToPointer
. Mientras tanto, el segundo indica que un objeto de tipo puntero a puntero para const int también es const y que este objeto es pointerToPointer
.
En el caso de la OP:
int const MyClass::showName(string id){
...
}
El tipo de lo que es const int es, y lo que es const es el valor de retorno de la función.
Mientras tanto:
int MyClass::showName(string id) const {
...
}
Aquí el tipo de lo que es const es la función (string) int regresar, y lo que es const es la función en sí, es decir, el cuerpo de la función.
pregunta relacionada [aquí] (http://stackoverflow.com/questions/10368294/const-at-the-end-of-function-declaration-in-c/) – juanchopanza