Sobes.tech
Junior

Wat is polymorfisme in de context van programmeertalen C/C++?

sobes.tech AI

Antwoord van AI

Polymorfisme is de eigenschap van objecten om meerdere vormen te hebben of verschillende typen te vertegenwoordigen in een erfhiërarchie. Het stelt je in staat om met objecten van verschillende klassen te werken via een gemeenschappelijke interface van de basisklasse.

In C++ wordt polymorfisme op twee hoofdmanieren geïmplementeerd:

  1. Compileertijd polymorfisme (statisch, ad-hoc polymorfisme):

    • Wordt gerealiseerd door middel van functieverhoging en operatoroverbelasting.
    • De keuze van de specifieke functie of operator gebeurt tijdens de compilatie.
    // Voorbeeld van functieverhoging
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Uitvoertijd polymorfisme (dynamisch, subtype polymorfisme):

    • Wordt gerealiseerd door virtuele functies en pointers/links naar de basisklasse.
    • De keuze van de specifieke functie die wordt aangeroepen, gebeurt tijdens de uitvoering.
    • Vereist dat er minstens één virtuele functie in de basisklasse is.
    • Gebruikt de virtuele functietabel (vtable).
    // Voorbeeld van dynamisch polymorfisme
    class Base {
    public:
        virtual void show() { /* Implementatie in de basisklasse */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Overschreven implementatie */ }
    };
    
    // Gebruik
    Base* ptr = new Derived();
    ptr->show(); // Roept Derived::show() aan
    

Polymorfisme maakt het mogelijk om flexibelere en uitbreidbare code te schrijven, omdat nieuwe klassen kunnen worden toegevoegd zonder de bestaande code te wijzigen die met de basisklasse werkt.