Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++ Grundkurs

Finale Deklaration einer Methode

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Programmiersprache stellt mit der finalen Deklaration eine Variante zur Verfügung, um eine Methode nicht überschreiben zu können.
02:10

Transkript

In dieser Lektion werde ich Ihnen vorstellen, wie Sie das Überschreiben von virtuellen Methoden in C++ unterbinden können. Eine als *final* deklarierte virtuelle Methode darf nicht überschrieben werden. Das überprüft der Compiler. Bei seiner Überprüfung berücksichtigt der Compiler dabei die Parameter der Methode, den Rückgabetyp der Methode und die *const*-Zusicherung der Methode. Methoden und Klassen, die als *final* deklariert sind, stellen ein Optimierungspotential für den Compiler dar. Warum ist das so? Der Compiler erhält dadurch deutlich mehr Einsicht in die Ableitungshierarchie und kann weitreichendere Folgen für seine Optimierung treffen. Sie müssen sich *final* wie einen Vertrag vorstellen. Sie als Programmierer deklarieren eine Funktion als *final*. Der Compiler stellt sicher, dass Sie den Vertrag einhalten. Das Ganze will ich jetzt in der Anwendung zeigen. Hier habe ich eine Klasse *Base* und eine Klasse *Derived*. Die Klasse *Base* hat eine virtuelle Funktion h. Die Klasse *Derived* ist von *Base* abgeleitet. Die hat drei virtuelle Funktionen, h mit *int*, h mit *double* und g, das ein *long* annimmt. Jetzt gehe ich einmal von oben nach unten durch. Das gibt einen Kompilierfehler, weil ich mit der virtuellen Methode die virtuelle Methode der Basisklasse überschreibe. Die ist aber als *final* deklariert. *h(double)* wird gut gehen, weil diese Methode hier ein *double* als Argument annimmt und hier ein Argument vom Typ *long* annimmt. Mit der Methode hier erkläre ich erst eine *final*-Methode. Das heißt, das kann keine Probleme geben. Nur ein einer von *Derived* abgeleiteten Klasse dürfte ich diese Methode mit der Signatur *g(long)* nicht überschreiben. Jetzt zeige ich Ihnen, was der Compiler macht, wenn ich diesen Vertrag breche. Sie sehen, er moniert Zeile 6: * virtual function ‘virtual void Derived::h(int)‘ *. Zeile 6 ist diese Zeile und genau das, was ich gesagt habe. Mit *h(int)* überschreibe ich eine Methode der Basisklasse, die methodisch aber als *final* deklariert. In dieser Lektion habe ich das Schlüsselwort *final* vorgestellt. Mit *final* können Sie eine virtuelle Methode als *final* deklarieren. Das bewirkt, dass Sie die Methode in abgeleiteten Klassen nicht überschreiben dürfen. Den Vertrag prüft der Compiler.

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!