Unter normalen Umständen , Methoden in C + + nicht teilen kann einen Namen . Dies führt dazu, Fehler, die durch die Einführung der Möglichkeit der Verwechslung in Verfahren Referenzen. Ein Programmierer , die den gleichen Namen für eine Methode zu verwenden, aber neu definieren diese Methode auf verschiedenen Parametern wünscht , hat zwei Möglichkeiten . Der Programmierer kann zu Überlastung der Funktion mit dem gleichen Namen, aber ändern die Argumente der Methode. Auch, wenn der Programmierer mit einer abgeleiteten Klasse kann er oder sie die Funktion einer Basisklasse überschreiben, um verschiedene Funktionen auszuführen. Überladen von Methoden
Sobald ein Programmierer erklärt , ein Verfahren , das in der Regel nicht Namen benennen kann ein anderes Verfahren mit unterschiedlichen Code drin. Der Ausschluss ist dies, wenn die Argumente der Methode unterscheiden . Zum Beispiel könnte ein Programmierer legen die Methode "berechnen" , um eine ganze Zahl als Argument nehmen :
int calculate (int x )
Nach den Regeln von C + +, eine andere Methode mit dem Namen " berechnen " das dauert eine ganze Zahl als Argument nicht existieren könnte , unabhängig von der Code innerhalb der Methode . Aber , könnte eine andere Methode mit dem gleichen Namen und unterschiedlichen Argumenten existieren :
int calculate (double x )
Der Typ oder ein Argument , wenn die Methode aufgerufen wird entscheiden, welche Methode ausgeführt würde
.
Einschränkungen
Einschränkungen existieren , wie das Überladen von Methoden Werke in C + +. Um Überlastung Namen einer Methode müssen die Argumente verwenden unterschiedliche Datentypen , oder unterscheiden sich in der Menge von Argumenten bezeichnet. Methoden , die unterschiedliche Werte zurückgeben , sondern teilen sich einen Namen und gleiche Liste von Argumenten , sind nicht erlaubt in C + +. Methoden mit gleichem Namen und Argumente , die sich nur wegen eines anderen Typs Namen (oder geben einen vorhandenen Datentyp einen anderen Namen ) sind ebenfalls nicht erlaubt. Zum Beispiel:
typdef int fake_int ;
int write ( int x )
double write ( int x )
int write ( fake_int x )
Keiner dieser drei Verfahren Definitionen folgen den Regeln der Methode Überlastung und einen Fehler zurück .
Ableitung
ein anderer Weg , um eine Überlastung einer Methode ist durch Klasse Ableitung . Bei der Konstruktion der Klasse , kann ein Programmierer machen eine Klasse erbt die Funktionalität von einer anderen Klasse . Die Erben (abgeleitet ) Klasse können die Methoden der Klasse erbt von (Basis -Klasse). Eine Basis (Klasse X) konnte eine Methode "print" definiert. Eine weitere Klasse (Klasse Y ), die aus der Klasse X leitet sich auch Zugang zu drucken. Allerdings könnte auch Klasse Y definieren ihre eigene Version der Print-Methode . In diesem Fall wird die Print-Methode ausgeführt derjenige in der Klasse Y definiert sein , es sei denn, der Programmierer legt fest, dass die Klasse X Version von Print ausführen soll .
Beispiele
ein Beispiel für ein Verfahren neu definiert durch eine abgeleitete Klasse beinhaltet zwei Klassen . Erstens, die Basisklasse :
First Class (
public:
int x;
int returnX () {
Rückkehr x ; }
};
Dann eine abgeleitete Klasse, die definiert " returnX () "-Methode :
Klasse Second: Erste öffentliche {
public: int
returnX () { return x
+1; }
};
< p > die " Zweite " Klasse hat Zugriff auf die Variable "x " und die Methode " returnX ()" , die Teil der "First" -Klasse sind . jedoch die Zweite returnX ()-Methode definiert in seine eigene Definition . Dies bedeutet, dass , wenn ein Objekt der Klasse Zweitens ruft die returnX ()-Methode , wird der Rückgabewert x +1 sein .