significado metodo español constantes calificador c++ const

c++ - metodo - ¿Qué significa const al seguir una firma de función/método?



constantes en c++ (4)

El compilador no permitirá que una función miembro constante cambie * esto o invoque una función miembro no constante para este objeto

Esta pregunta ya tiene una respuesta aquí:

Según MSDN: "Al seguir la lista de parámetros de una función miembro, la palabra clave const especifica que la función no modifica el objeto para el que se invoca".

¿Podría alguien aclarar esto un poco? ¿Significa que la función no puede modificar ninguno de los miembros del objeto?

bool AnalogClockPlugin::isInitialized() const { return initialized; }


Esto significa que el método no modifica las variables de miembro (excepto los miembros declarados como mutable ), por lo que se puede llamar en instancias constantes de la clase.

class A { public: int foo() { return 42; } int bar() const { return 42; } }; void test(const A& a) { // Will fail a.foo(); // Will work a.bar(); }


Según lo respondido por @delroth, significa que la función miembro no modifica ninguna variable memeber, excepto aquellas declaradas como mutables. Puedes ver las buenas preguntas frecuentes sobre la corrección de const en C ++ here


Tenga en cuenta también que si bien la función miembro no puede modificar las variables miembro que no están marcadas como mutables, si las variables miembro son punteros, la función miembro puede no ser capaz de modificar el valor del puntero (es decir, la dirección a la que apunta el puntero), pero puede modificar lo que apunta el puntero (la región de memoria real).

Así por ejemplo:

class C { public: void member() const { p = 0; // This is not allowed; you are modifying the member variable // This is allowed; the member variable is still the same, but what it points to is different (and can be changed) *p = 0; } private: int *p; };