Wenn in C ++ sowohl eine Funktion mit demselben Namen in der Basis- als auch in der abgeleiteten Klasse vorhanden ist, überschreibt die Funktion der abgeleiteten Klasse die Basisklassenfunktion. Dies zeigt, dass, wenn eine Funktion mit dem Objekt der abgeleiteten Klasse aufgerufen wird, anstelle der Basisklassenfunktion, die abgeleitete Klassenfunktion ausgeführt wird. Das ist bekannt als Funktion in C überschrieben++, und es ermöglicht es abgeleiteten Klassen, das Verhalten der Basisklassenfunktion so zu ändern, dass sie ihren spezifischen Anforderungen entsprechen. Überschreiben ist wichtig, da es die Wiederverwendbarkeit von Code ermöglicht und den Programmierern die Änderung des Codes erleichtert und die Notwendigkeit des Codes entfernen muss.
In diesem Artikel werden wir zeigen, wie man das benutzt "Überschreiben" In C ++ - Programmiersprache.
Inhalt für diesen Artikel:
So verwenden Sie Override in C++
Benutzen "Überschreiben" In C ++ müssen wir es lediglich nach der Funktionserklärung in der abgeleiteten Klasse hinzufügen. Hier ist ein Beispiel:
Beispiel 1: C ++ - Funktion überschreibt
Der bereitgestellte Code zeigt die Funktion über die Übergabe in C++.
#enthalten
Verwenden von Namespace STD;
Klasse Eltern
öffentlich:
void LinuxHint_print ()
Cout << "This is Base Function" << endl;
;
Klassenkind: öffentlicher Elternteil
öffentlich:
void LinuxHint_print ()
Cout << "This is Derived Function" << endl;
;
int main ()
Child Child_derived;
Child_derived.LinuxHint_print ();
Rückkehr 0;
Wir haben eine übergeordnete Klasse mit einer Funktion namens namens LinuxHint_print () Das druckt eine Nachricht an die Konsole. Wir erstellen dann eine untergeordnete Klasse, die öffentlich von der Elternklasse erbt und die überschreibt LinuxHint_print () Funktion mit einer eigenen Implementierung, die auch eine Nachricht an die Konsole druckt.
In der Funktion main () wird ein Objekt der untergeordneten Klasse erstellt und benannt als LinuxHint_print () Funktion. Da die Kinderklasse die außer Kraft setzt LinuxHint_print () Funktion der übergeordneten Klasse, die Ausgabe wird sein Dies ist abgeleitete Funktion anstatt Dies ist die Basisfunktion.
Beispiel 2: C ++ Zugriff überschriebene Funktion in die Basisklasse
Manchmal möchten wir die überragende Funktion in der Basisklasse aus der abgeleiteten Klasse aufrufen. Wir können dies tun, indem wir den Operator der Bereichslösungsoperator verwenden. '::'. Hier ist ein Beispiel:
#enthalten
Verwenden von Namespace STD;
Klassenbasis
öffentlich:
virtual void test ()
Cout << "This is Base Class" << endl;
;
Klasse abgeleitet: öffentliche Basis
öffentlich:
void test ()
Basis :: test ();
Cout << "This is Derived Class" << endl;
;
int main ()
Abgeleitete abgeleitet;
abgeleitet.prüfen();
Rückkehr 0;
Der obige Code definiert zwei Klassen Base Und Abgeleitet, wo die abgeleitete Klasse von der Basisklasse erbt. Beide Klassen verfügen über eine Funktion namens test (), in der die Nachricht auf der Konsole angezeigt wird. Die Funktion test () in der Basisklasse wird als virtuell deklariert, was darauf hinweist, dass sie durch abgeleitete Klassen überschrieben werden kann.
In der abgeleiteten Klasse überschreiben wir die Funktion test () und rufen die Funktion der Basisklasse test () mithilfe der Funktion auf Basis :: Test () zu drucken Dies ist Basis Klasse zur Konsole. Wir drucken dann Dies ist abgeleitete Klasse zur Konsole, nachdem die test () -Funktion der Basisklasse aufgerufen wurde.
Wenn wir ein Objekt der abgeleiteten Klasse erstellen und die Funktion test () aufrufen, wird die Ausgabe sein Dies ist Basis Klasse gefolgt von Dies ist abgeleitete Klasse, Angeben, dass die abgeleitete Klasse die test () -Funktion der Basisklasse überschrieben und ihr eigenes Verhalten hinzugefügt hat.
Beispiel 3: c ++ call überschriebene Funktion aus der abgeleiteten Klasse
Wir können auch die überschriebene Funktion in der Basisklasse von außerhalb der Klassenhierarchie aufrufen, indem wir einen Zeiger auf die Basisklasse verwenden. Hier ist ein Beispiel:
Dieser Code zeigt Funktionsüberschreitungen in C ++ unter Verwendung der Vererbung.
#enthalten
Verwenden von Namespace STD;
Klassenbasis
öffentlich:
void test ()
Cout << "This is Base Function" << endl;
;
Klasse abgeleitet: öffentliche Basis
öffentlich:
void test ()
Cout << "This is Derived Function" << endl;
// Aufrufe überschriebene Funktion aufrufen
Basis :: test ();
;
int main ()
Abgeleitet1;
abgeleitet1.prüfen();
Rückkehr 0;
Es gibt zwei Klassen, die definiert sind, Basis und abgeleitet sind. Hier im obigen Code wird die abgeleitete Klasse mit Hilfe des öffentlichen Vererbungsspezifizierers von der Basis abgeleitet.
Beide Klassen haben eine Mitgliedsfunktion mit dem Namen prüfen(), Dies zeigt eine Nachricht auf der Konsole an. In der abgeleiteten Klasse wird die Funktion test () jedoch überschrieben, um eine andere Nachricht zu drucken und auch die Funktion test () der Basisklasse mit dem Aperator der Geltungsauflösung aufzurufen (: :).
Die main () -Funktion hat ein Objekt abgeleitete Klasse, und ihre Test () -Funktion wird genannt. Wenn die Funktion test () auf das abgeleitete Objekt aufgerufen wird, druckt sie aus Dies ist abgeleitete Funktion zur Konsole und ruft dann die Funktion test () der Basisklasse auf, die druckt Dies ist die Basisfunktion zur Konsole.
Beispiel 4: C ++ Call Overdiden -Funktion mit Zeiger
Wir können die überschriebene Funktion in der Basisklasse auch mit einem Zeiger auf die abgeleitete Klasse aufrufen. Hier ist ein Beispiel:
#enthalten
Verwenden von Namespace STD;
Klassenbasis
öffentlich:
void test ()
Cout << "This is Base Function" << endl;
;
Klasse abgeleitet: öffentliche Basis
öffentlich:
void test ()
Cout << "This is Derived Function" << endl;
;
int main ()
Abgeleitet1;
// Zeiger auf abgeleitet1
Basis* ptr = &derived1;
// Aufrufen der Basisklassenfunktion
ptr-> test ();
Rückkehr 0;
Im obigen Programm sind zwei Klassen definiert, basieren und abgeleitet. Beide Klassen haben eine Mitgliedsfunktion mit dem Namen test (), die eine Nachricht auf der Konsole anzeigt.
Im hauptsächlich() Funktion, ein Objekt der abgeleiteten Klasse wird erstellt und ein Zeiger -PTR der Typbasis erstellt und initialisiert, um auf das abgeleitete Objekt zu verweisen.
Die Funktion test () wird auf dem aufgerufen ptr Zeiger, der vom Typ Basis ist. Die Funktion test () in der Basisklasse kann in jeder abgeleiteten Klasse mit dem Zeiger überschrieben werden.
Hier, wenn die Funktion test () auf die aufgerufen wird ptr Zeiger, es druckt Dies ist die Basisfunktion zur Konsole statt zur Konsole Dies ist abgeleitete Funktion.
Unterschied zwischen Übergeordneter und Überlastung in C++
Übergeordnet und Überladung sind zwei wichtige Konzepte in der objektorientierten Programmierung. In C ++ werden sie verwendet, um ein polymorphes Verhalten bereitzustellen, das es verschiedenen Objekten ermöglicht, unterschiedlich auf dieselbe Nachricht zu reagieren.
Überlastung Erstellen Sie mehrere Funktionen mit demselben Namen, haben jedoch unterschiedliche Parameter oder Argumententypen.
Überschreiben, Auf der anderen Seite bezieht sich die Neudefinition einer Funktion in einer abgeleiteten Klasse, die denselben Namen wie eine Basisklassenfunktion enthält.
Der Schlüsselunterschied Zwischen Überschreiben und Überlastung besteht darin. Im Gegensatz dazu beinhaltet Überladen das Erstellen mehrerer Aufgaben mit demselben Namen, aber unterschiedliche Parameter oder Argumententypen.
Abschluss
Der "Überschreiben" In C ++ kann sicherstellen, dass die Funktion in der abgeleiteten Klasse die virtuelle Funktion der Basisklasse überschreibt. In diesem Artikel werden verschiedene Möglichkeiten erörtert, eine Funktion zu überschreiben. In C ++ kann die Funktion in beide Richtungen von Basis bis abgeleitet oder umgekehrt überschrieben werden. Außerdem können wir einen Zeiger auf eine Basisklasse definieren und eine abgeleitete Funktion darauf überschreiben.