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 |