Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++ Grundkurs

Methode überschreiben

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Der Compiler überprüft bei einer als virtuell deklarierten Methode, ob diese eine Methode einer Basisklasse überschreibt.
02:30

Transkript

In dieser Lektion will ich Ihnen das explizite Überschreiben von Methoden in C++ vorstellen. Eine Methode, die Sie als virtuell deklariert haben, können Sie durch das Schlüsselwort *override* in einer abgeleiteten Klasse explizit überschreiben. Stellen Sie sich das so vor. Sie haben eine größere Ableitungshierarchie. Sie wollen in einer abgeleiteten Klasse eine Methode der Basisklasse überschreiben. Damit Sie sichergehen, dass Sie die Charakteristiken der Methode der Basisklasse treffen, verwenden Sie das Schlüsselwort *override*. Was berücksichtigt der Compiler dabei? Die Parameter und den Rückgabetyp der Methode, die *const*-Zusicherung der Methode und die Virtualität der Methode. Sie können sich das so vorstellen. Sie schreiben *override*. Der Compiler prüft dann, ob Sie den Vertrag eingehalten haben. Das heißt, ob Sie tatsächlich eine Methode der Basisklasse beschreiben. Das will ich jetzt gerne noch in der Anwendung zeigen. Hier habe ich eine Klasse *Base* und eine Klasse *Derived*. Die Klasse *Base* definiert ein paar Methoden. Die Klasse *Derived* will diese Methoden überschreiben. Ich fange hier bei der Klasse *Derived* an. Zuerst *func1*. Mit dieser Methode will ich die *func1* der Methode *Base* überschreiben. Das ist syntaktisch falsch, weil die Methode *func* oben nicht virtuell ist. *func2* auch wieder syntaktisch falsch. Warum? Weil *func2* hier ein *double* erwartet, hier oben ein *float*. *func3* ist fast richtig. Hier in der abgeleiteten Klasse fehlt das *const,* das ich hier oben habe. *func4* auch nur fast richtig, weil der Rückgabetyp von *func4* ist hier *int*, hier oben aber *long*. Jetzt habe ich es endlich geschafft. Die Funktion *f* überschreibt die Funktion *f* hier oben in der syntaktischen richtigen Art und Weise. Jetzt will ich noch zeigen, wie der Compiler diesen Vertrag prüft. Ich habe den Vertrag ein paar Mal gebrochen. Jetzt übersetze ich das Programm und Sie sehen, in Zeile 14 moniert er: *marked override, but does not override*. Da markiere ich eine Funktion, eine virtuelle Funktion, dass er eine Methode der Basisklasse überschreiben soll, er tut es aber tatsächlich nicht. Das Gleiche trifft auf 16, auf 18 und auf 20 zu. Die 6 bezieht sich auf die 6 hier oben. Da moniert er auch noch, dass der Rückgabetyp nicht passt. *int* passt nicht zu *long*. Der Compiler hält den Vertrag ein und das Programm lässt sich nicht übersetzen. In dieser Lektion habe ich das Schlüsselwort *override* vorgestellt. Das hilft Ihnen sicherzugehen, dass Sie mit einer Methode in einer abgeleiteten Klasse einer Methode einer Basisklasse überschreiben.

C++ Grundkurs

Steigen Sie in die mächtige Programmiersprache C++ ein und lernen Sie dabei alle wichtigen Funktionen mit Anwendungsbeispielen kennen.

8 Std. 14 min (147 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!