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:
-
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) { /* ... */ } -
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ă.