Sobes.tech
Junior

¿Qué es el polimorfismo en el contexto de los lenguajes de programación C/C++?

sobes.tech AI

Respuesta de la IA

El polimorfismo es la propiedad de los objetos de tener muchas formas o representar varios tipos en una jerarquía de herencia. Permite trabajar con objetos de diferentes clases a través de una interfaz común de la clase base.

En C++, el polimorfismo se implementa de dos maneras principales:

  1. Polimorfismo en tiempo de compilación (estático, polimorfismo ad-hoc):

    • Se realiza mediante sobrecarga de funciones y sobrecarga de operadores.
    • La selección de la función o el operador específico que se implementará ocurre en tiempo de compilación.
    // Ejemplo de sobrecarga de funciones
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Polimorfismo en tiempo de ejecución (dinámico, polimorfismo de subtipos):

    • Se realiza mediante funciones virtuales y punteros/enlaces a la clase base.
    • La selección de la función específica que se llamará ocurre en tiempo de ejecución.
    • Requiere que al menos una función virtual exista en la clase base.
    • Utiliza la tabla de funciones virtuales (vtable).
    // Ejemplo de polimorfismo dinámico
    class Base {
    public:
        virtual void show() { /* Implementación en la clase base */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Implementación sobreescrita */ }
    };
    
    // Uso
    Base* ptr = new Derived();
    ptr->show(); // Se llama a Derived::show()
    

El polimorfismo permite escribir código más flexible y extensible, ya que se pueden agregar nuevas clases sin modificar el código existente que trabaja con la clase base.