Sobes.tech
Junior

Ce este polimorfismul în contextul limbajelor de programare C/C++?

sobes.tech AI

Răspuns de la AI

Polimorfismul este proprietatea obiectelor de a avea multiple forme sau de a reprezenta mai multe tipuri într-o ierarhie de moștenire. Permite lucrul cu obiecte din diferite clase printr-o interfață comună a clasei de bază.

În C++, polimorfismul se implementează în două moduri principale:

  1. Polimorfismul în timpul compilării (static, polimorfism ad-hoc):

    • Se realizează prin suprasarcina funcțiilor și suprasarcina operatorilor.
    • Alegerea funcției sau operatorului specific are loc în timpul compilării.
    // Exemplu de suprasarcină a funcțiilor
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Polimorfismul în timpul execuției (dinamic, polimorfism de subtip):

    • Se realizează prin funcții virtuale și pointeri/legături către clasa de bază.
    • Alegerea funcției specifice care va fi apelată are loc în timpul execuției.
    • Necesită ca cel puțin o funcție virtuală să fie prezentă în clasa de bază.
    • Utilizează tabelul de funcții virtuale (vtable).
    // Exemplu de polimorfism dinamic
    class Base {
    public:
        virtual void show() { /* Implementare în clasa de bază */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Implementare suprascrisă */ }
    };
    
    // Utilizare
    Base* ptr = new Derived();
    ptr->show(); // Se apelează Derived::show()
    

Polimorfismul permite scrierea unui cod mai flexibil și extensibil, deoarece noi clase pot fi adăugate fără a modifica codul existent care lucrează cu clasa de bază.