Junior
¿Qué son la sobrecarga y la sobrescritura de métodos en C++?
sobes.tech AI
Respuesta de la IA
Sobrecarga de métodos (Method Overloading):
- Permite tener varios métodos con el mismo nombre en una clase.
- Se diferencian por firma (cantidad y/o tipos de parámetros).
- El tipo de retorno no participa en la definición de la firma para la sobrecarga.
- La selección de un método específico la determina el compilador en función de los tipos de argumentos en la llamada (enlace estático).
class MyClass {
public:
void print(int a) {
// Imprimir número entero
}
void print(double d) {
// Imprimir número de punto flotante
}
void print(int a, int b) {
// Imprimir dos números enteros
}
};
Sobrescritura de métodos (Method Overriding):
- Permite a la clase heredada proporcionar una implementación específica de un método que ya está definido en la clase base.
- El método en la clase heredada debe tener la misma firma (nombre, cantidad y tipos de parámetros) y el mismo tipo de retorno (o un tipo de retorno covariante).
- Se usa con funciones virtuales (
virtual) para implementar el polimorfismo. - La selección de la implementación concreta del método se determina en tiempo de ejecución (enlace dinámico), dependiendo del tipo real del objeto.
class Base {
public:
virtual void display() {
// Implementación en la clase base
}
};
class Derived : public Base {
public:
void display() override { // La palabra clave override (desde C++11) ayuda a evitar errores
// Implementación específica en la clase heredada
}
};
Diferencias principales:
| Característica | Sobrecarga de Métodos | Sobrescritura de Métodos |
|---|---|---|
| Lugar de aplicación | En una misma clase | En clases base y derivadas |
| Nombre del método | Mismo | Mismo |
| Firma del método | Diferente | Igual |
| Mecanismo de selección | Enlace estático (compilación) | Enlace dinámico (ejecución) |
| Se usa con | Funciones normales | Funciones virtuales |
| Objetivo | Acciones diferentes para distintos tipos | Implementación específica en la herencia |