Sobes.tech
Junior

Wat zijn methodenoverbelasting en -overschrijving in C++?

sobes.tech AI

Antwoord van AI

Method Overloading (Method Overloading):

  • Maakt het mogelijk om meerdere methoden met dezelfde naam in één klasse te hebben.
  • Ze verschillen in handtekening (aantal en/of types van parameters).
  • Het geretourde type neemt niet deel aan de definitie van de handtekening voor overbelasting.
  • De keuze voor een specifieke methode wordt door de compiler bepaald op basis van de argumenttypes tijdens de aanroep (statische binding).
class MyClass {
public:
    void print(int a) {
        // Afdrukken van een geheel getal
    }

    void print(double d) {
        // Afdrukken van een drijvend-kommagetal
    }

    void print(int a, int b) {
        // Afdrukken van twee gehele getallen
    }
};

Method Overriding (Method Overriding):

  • Maakt het mogelijk voor een afgeleide klasse om een specifieke implementatie van een methode te bieden die al in de basisklasse is gedefinieerd.
  • De methode in de afgeleide klasse moet dezelfde handtekening hebben (naam, aantal en types van parameters) en hetzelfde geretourde type (of een covariante geretourde type).
  • Wordt gebruikt met virtuele functies (virtual) om polymorfisme te implementeren.
  • De keuze voor de concrete implementatie van de methode wordt tijdens de uitvoering bepaald (dynamische binding), afhankelijk van het werkelijke type van het object.
class Base {
public:
    virtual void display() {
        // Implementatie in de basisklasse
    }
};

class Derived : public Base {
public:
    void display() override { // Het sleutelwoord override (vanaf C++11) helpt fouten te voorkomen
        // Specifieke implementatie in de afgeleide klasse
    }
};

Belangrijkste verschillen:

Kenmerk Method Overloading Method Overriding
Toepassingsplaats In één klasse In basisklassen en afgeleide klassen
Methodenaam Zelfde Zelfde
Handtekening methode Verschillend Zelfde
Mechanisme keuze Statische binding (compileertijd) Dynamische binding (uitvoering)
Gebruikt met Normale functies Virtuele functies
Doel Verschillende acties voor verschillende types Specifieke implementatie in erfenis