Ein einfaches Programm mit Vererbung

Beispielprogramm: VIRTL1.CPP

Das Programm VIRTL1.CPP soll Ausgangspunkt unserer virtuellen Tour sein. Da dieses Programm nichts mit virtuellen Funktionen zu tun hat, mag der Name ein wenig in die Irre führen. Wir haben es so genannt, weil es Teil einer Serie von Programmen ist, die die Verwendung von virtuellen Funktionen illustrieren soll. Das letzte Programm dieses Kapitels wird dann die "richtige" Verwendung von virtuellen Funktionen zeigen.

Das erste Programm ist sehr einfach und, wie Du sicher bemerkt hast, einem Programm, das wir früher in dieser Einführung besprochen haben, ähnlich. Allein, es ist radikal vereinfacht, damit wir uns auf die virtuellen Funktionen konzentrieren können. Die meisten der Funktionen des letzten Kapitels haben wir aus diesem Grund komplett weggelassen, und eine neue Methode haben wir der Elternklasse in Zeile 9 hinzugefügt: Nachricht(). Das Studium dieser Funktion in der Basisklasse und den abgeleiteten Klassen wird uns das gesamte Kapitel hindurch begleiten. Aus diesem Grund gibt es eine Methode mit dem Namen Nachricht() auch in der Klasse Auto und in der neuen Klasse mit dem Namen Boot, die wir in den Zeilen 30 bis 36 definieren.

Dir ist sicherlich aufgefallen, daß die Klasse Laster keine Methode mit dem Namen Message() hat. Das ist natürlich aus Absicht geschehen (haha), um die Verwendung einer virtuellen Methode (oder, wenn Dir das besser gefällt, einer virtuellen Funktion) illustrieren zu können. Da die Methoden der Basisklasse mit dem Schlüsselwort public übernommen werden, ist die Methode mit dem Namen Nachricht() der Basisklasse in der Klasse Laster verfügbar.

Die Methode Nachricht() wurde auch absichtlich so einfach gehalten. Wir sind eben an virtuellen Funktionen interessiert und nicht an Funktionen mit langem, kompliziertem Code.

Das Hauptprogramm ist so einfach wie die Klassen. Wir deklarieren ein Objekt jeder der vier Klassen in den Zeilen 41 bis 44 und rufen die Methode mit dem Namen Nachricht() für jedes Objekt einmal auf. Die Ausgabe auf dem Bildschirm zeigt uns, daß die Methode für jedes Objekt aufgerufen wird mit Ausnahme des Sattelschleppers, dessen Klasse keine Methode diesen Namens hat. Wie wir im letzten Kapitel gesehen haben, wird die Methode mit dem Namen Nachricht() der Elternklasse aufgerufen. Das beweist auch die Ausgabe auf dem Bildschirm, wo für das Objekt mit dem Namen Sattelschlepper "Nachricht vom Vehikel" zu lesen ist.

Die Daten der Objekte sind in diesem Kapitel von keinem Belang, also sind alle standardmäßig private und werden in die abgeleiteten Klassen nicht übernommen. Einiges haben wir dennoch übrig gelassen, damit die Klassen zumindest wie Klassen aussehen.

Wenn Du dieses Programm verstanden hast, kompiliere es und führe es aus.

(weiter...)