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