Saltar al contenido

¿Qué significa “const” al final de la declaración de función?

Nuestros desarrolladores estrellas agotaron sus provisiones de café, investigando diariamente por la respuesta, hasta que Victoria encontró la solución en Gitea así que ahora la compartimos aquí.

Solución:

Una “función const”, denotada con la palabra clave const después de una declaración de función, hace que sea un error del compilador que esta función de clase cambie una variable miembro de la clase. Sin embargo, la lectura de variables de clase está bien dentro de la función, pero escribir dentro de esta función generará un error de compilación.

Otra forma de pensar en tal “función const” es ver una función de clase como una función normal que toma un implícito this puntero. Entonces un método int Foo::Bar(int random_arg) (sin la const al final) da como resultado una función como int Foo_Bar(Foo* this, int random_arg)y una llamada como Foo f; f.Bar(4) corresponderá internamente a algo como Foo f; Foo_Bar(&f, 4). Ahora agregando la const al final (int Foo::Bar(int random_arg) const) puede entonces entenderse como una declaración con un puntero const this: int Foo_Bar(const Foo* this, int random_arg). Dado que el tipo de this en tal caso es const, no es posible modificar las variables miembro.

Es posible aflojar la restricción de “función const” de no permitir que la función escriba en ninguna variable de una clase. Para permitir que se pueda escribir en algunas de las variables, incluso cuando la función está marcada como una “función const”, estas variables de clase se marcan con la palabra clave mutable. Por lo tanto, si una variable de clase está marcada como mutable, y una “función const” escribe en esta variable, entonces el código se compilará limpiamente y es posible cambiar la variable. (C++11)

Como es habitual cuando se trata de const palabra clave, cambiando la ubicación de la const key palabra en una declaración de C++ tiene significados completamente diferentes. El uso anterior de const solo se aplica al agregar const al final de la declaración de la función después del paréntesis.

const es un calificador muy usado en exceso en C++: la sintaxis y el orden a menudo no son sencillos en combinación con punteros. Algunas lecturas sobre const corrección y la const palabra clave:

Corrección constante

La declaración ‘const’ de C++: por qué y cómo

Considere dos variables de tipo de clase:

class Boo  ... ;

Boo b0;       // mutable object
const Boo b1; // non-mutable object

Ahora puedes llamar ninguna función miembro de Boo en b0pero sólo const-funciones de miembros calificados en b1.

Bar se garantiza que no cambiará el objeto en el que se está invocando. Consulte la sección sobre corrección de const en las preguntas frecuentes de C++, por ejemplo.

Comentarios y calificaciones del tutorial

Finalizando este artículo puedes encontrar las observaciones de otros sys admins, tú igualmente puedes mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *