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
3class Animal {
4public:
5 virtual void sonido() const {
6 std::cout << "...\n";
7 }
8 virtual ~Animal() = default;
9};
10
11class Perro : public Animal {
12public:
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
4void escuchar(const Animal& a) {
5 a.sonido();
6}
7
8int main() {
9 Perro p;
10 escuchar(p); // Guau
11 return 0;
12}

Destructor virtual

Si borras 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.