Café y Código

10. Herencia y polimorfismo

Herencia

Una clase derivada extiende una base, reutilizando y especializando comportamiento.

Herencia básica
CPP
1 #include <iostream>
2
3 class Animal {
4 public:
5 virtual void sonido() const {
6 std::cout << "...\n";
7 }
8 virtual ~Animal() = default;
9 };
10
11 class Perro : public Animal {
12 public:
13 void sonido() const override {
14 std::cout << "Guau\n";
15 }
16 };

Polimorfismo

Con virtual en la base, una referencia o puntero a Animal puede llamar a la versión correcta de sonido() según el objeto real (Perro, etc.).

Enlace dinámico
CPP
1 #include <iostream>
2 // (mismas clases Animal / Perro que arriba)
3
4 void escuchar(const Animal& a) {
5 a.sonido();
6 }
7
8 int main() {
9 Perro p;
10 escuchar(p); // Guau
11 return 0;
12 }

Destructor virtual

Si borrás objetos a través de puntero a base, el destructor de la base debe ser virtual para que se destruya bien la parte derivada.

Ejercicio

Modelá Figura con area() virtual y dos clases Circulo y Cuadrado que la implementen.

Dato curioso: C++ apareció en 1985; Bjarne Stroustrup en Bell Labs. Wikipedia

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.