Funciones miembro const
Marque los métodos de solo lectura
Funciones miembro const es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.
Qué es una función miembro const
Una función miembro marcada como const garantiza que no modificará el estado observable del objeto. La palabra clave se coloca después de la lista de parámetros.
#include <iostream>
class Counter {
int n = 0;
public:
int value() const { return n; } // read-only
void inc() { ++n; }
};
int main() {
Counter c;
c.inc();
std::cout << c.value() << "\n";
}Los objetos const llaman a métodos const
En un objeto const solo puede llamar a funciones miembro const. Los métodos no const están prohibidos.
#include <iostream>
class Counter {
int n = 0;
public:
int value() const { return n; }
void inc() { ++n; }
};
int main() {
const Counter c;
std::cout << c.value() << "\n"; // OK
// c.inc(); // ERROR
}this se convierte en const
Dentro de una función miembro const, this es un puntero a const, por lo que el compilador rechaza cualquier intento de modificar miembros.
Marque como const todos los métodos de solo lectura
Los getters, las consultas y las funciones que imprimen datos deberían ser const. Así pueden trabajar con objetos const y referencias const.
Sobrecarga con const
Puede proporcionar una versión const y otra no const de un método; el compilador elige una u otra según si el objeto es const.
#include <iostream>
#include <vector>
class Box {
std::vector<int> v{1, 2, 3};
public:
int& at(int i) { return v[i]; } // mutable access
const int& at(int i) const { return v[i]; } // read-only access
};
int main() {
Box b;
b.at(0) = 99;
std::cout << b.at(0) << "\n";
}La palabra clave mutable
Los miembros mutable pueden cambiar incluso dentro de un método const, lo que resulta útil para cachés o contadores que no forman parte del estado lógico.
#include <iostream>
class Cache {
mutable int hits = 0;
int data = 42;
public:
int get() const { ++hits; return data; } // hits is mutable
int hitCount() const { return hits; }
};
int main() {
Cache c;
c.get(); c.get();
std::cout << c.hitCount() << "\n";
}const lógico frente a const físico
const protege el estado lógico del objeto; mutable permite que cambien detalles de implementación, como las cachés, sin romper esa garantía.
Métodos const y referencias const
Una función que recibe un const& solo puede llamar a métodos const sobre él; este es otro motivo para marcar las consultas como const.
#include <iostream>
class Counter {
int n = 5;
public:
int value() const { return n; }
};
void report(const Counter& c) {
std::cout << c.value() << "\n"; // needs value() to be const
}
int main() { Counter c; report(c); }Devolver referencias const
Los accesores const suelen devolver const& para exponer miembros sin permitir que se modifiquen ni copiarlos.
No elimine const mediante conversiones
Usar const_cast para modificar un objeto realmente const produce un comportamiento indefinido. Use mutable para las excepciones legítimas.
Clases con corrección const
Una clase bien diseñada marca como const todos los métodos que no modifican el objeto, de modo que funciona sin problemas en contextos const en todo el programa.
Comprobación rápida
Compruebe cuánto entiende de las funciones miembro const.
Repaso
Ha aprendido a marcar como const los métodos de solo lectura, que los objetos const solo llaman a métodos const, cómo sobrecargar según const y cómo mutable permite modificar detalles de implementación. Evite const_cast y diseñe las clases con corrección const desde el principio.
Preguntas frecuentes
¿La lección «Funciones miembro const» es gratis?
Sí — el texto completo de «Funciones miembro const» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Funciones miembro const»?
Marque los métodos de solo lectura Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C++ Academy?
No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Funciones miembro const»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C++ Academy?
Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Variables y parámetros const
- Funciones miembro const
- constexpr y tiempo de compilación
- consteval y constinit