Sobes.tech
Junior

Was sind Methodenüberladung und -überschreibung in C++?

sobes.tech KI

Antwort von AI

Method Overloading (Method Overloading):

  • Ermöglicht es, mehrere Methoden mit dem gleichen Namen in einer Klasse zu haben.
  • Unterscheiden sich durch Signatur (Anzahl und/oder Typen der Parameter).
  • Der Rückgabetyp nimmt nicht an der Signaturdefinition für die Überladung teil.
  • Die Auswahl einer bestimmten Methode wird vom Compiler basierend auf den Argumenttypen beim Aufruf bestimmt (statische Bindung).
class MyClass {
public:
    void print(int a) {
        // Ausgabe einer Ganzzahl
    }

    void print(double d) {
        // Ausgabe einer Gleitkommazahl
    }

    void print(int a, int b) {
        // Ausgabe von zwei Ganzzahlen
    }
};

Methodenüberschreibung (Method Overriding):

  • Ermöglicht es der abgeleiteten Klasse, eine spezifische Implementierung einer Methode bereitzustellen, die bereits in der Basisklasse definiert ist.
  • Die Methode in der abgeleiteten Klasse muss die gleiche Signatur (Name, Anzahl und Typen der Parameter) und den gleichen Rückgabetyp haben (oder einen kovarianten Rückgabetyp).
  • Wird mit virtuellen Funktionen (virtual) verwendet, um Polymorphismus zu realisieren.
  • Die Auswahl der konkreten Methodenumsetzung erfolgt zur Laufzeit (dynamische Bindung), abhängig vom tatsächlichen Objekttyp.
class Base {
public:
    virtual void display() {
        // Implementierung in der Basisklasse
    }
};

class Derived : public Base {
public:
    void display() override { // Das Schlüsselwort override (ab C++11) hilft, Fehler zu vermeiden
        // Spezifische Implementierung in der abgeleiteten Klasse
    }
};

Hauptunterschiede:

Merkmal Method Overloading Method Overriding
Anwendungsort In einer Klasse In Basisklassen und abgeleiteten Klassen
Methodenname Gleich Gleich
Methodensignatur Verschieden Gleich
Auswahlmechanismus Statische Bindung (Kompilierung) Dynamische Bindung (Ausführung)
Wird verwendet mit Normale Funktionen Virtuellen Funktionen
Ziel Verschiedene Aktionen für unterschiedliche Typen Spezifische Implementierung in der Vererbung