Breymann. C++ Einführung und professionelle Programmierung

Breymann. C++ Einführung und professionelle Programmierung Breymann. C++ Einführung und professionelle Programmierung

vred.bioinf.uni.sb.de
von vred.bioinf.uni.sb.de Mehr von diesem Publisher
17.11.2014 Aufrufe

Wesentliche Merkmale virtueller Funktionen: • Virtuelle Funktionen dienen zum Überschreiben bei gleicher Signatur und gleichem Rückgabetyp. • Der Aufruf einer nicht-virtuellen Elementfunktion hängt vom Typ des Zeigers ab, über den die Funktion aufgerufen wird, während der Aufruf einer virtuellen Elementfunktion vom Typ des Objekts abhängt, auf das der Zeiger verweist. • Eine als virtuell deklarierte Funktion definiert eine Schnittstelle für alle abgeleiteten Klassen, auch wenn diese zum Zeitpunkt der Festlegung der Basisklasse noch unbekannt sind. • Der vorstehende Punkt gilt auch für Destruktoren. Wenn es überhaupt virtuelle Funktionen in einer Klasse gibt, sollte der Destruktor als virtual deklariert werden. Die Definition der Klasse GraphObj muss um die Zeile virtual ~GraphObj() {}; erweitert werden. Einzelheiten folgen. Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 324 zurück Ende

Aus diesen Punkten lässt sich eine wichtige Regel ableiten: Nicht-virtuelle Funktionen einer Basisklasse sollen nicht in abgeleiteten Klassen überschrieben werden! Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 325 zurück Ende

Wesentliche Merkmale virtueller Funktionen:<br />

• Virtuelle Funktionen dienen zum Überschreiben bei gleicher Signatur<br />

<strong>und</strong> gleichem Rückgabetyp.<br />

• Der Aufruf einer nicht-virtuellen Elementfunktion hängt vom Typ<br />

des Zeigers ab, über den die Funktion aufgerufen wird, während<br />

der Aufruf einer virtuellen Elementfunktion vom Typ des Objekts abhängt,<br />

auf das der Zeiger verweist.<br />

• Eine als virtuell deklarierte Funktion definiert eine Schnittstelle für<br />

alle abgeleiteten Klassen, auch wenn diese zum Zeitpunkt der Festlegung<br />

der Basisklasse noch unbekannt sind.<br />

• Der vorstehende Punkt gilt auch für Destruktoren. Wenn es überhaupt<br />

virtuelle Funktionen in einer Klasse gibt, sollte der Destruktor<br />

als virtual deklariert werden. Die Definition der Klasse GraphObj<br />

muss um die Zeile<br />

virtual ~GraphObj() {};<br />

erweitert werden. Einzelheiten folgen.<br />

<strong>Breymann</strong> <strong>C++</strong>, c○ Hanser Verlag München<br />

Inhalt ◭◭ ◭ ◮ ◮◮ 324 zurück Ende

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!