In der Klasse grafikobjekt
ist sicher schon die Definition
class grafikobjekt { // ... public: virtual void zeichne() = 0; virtual void loesche() = 0; // ... };Es handelt sich hierbei um eine Vordefinition der Methoden mit der Nullfunktion. Durch diese Definition wird die gesamte Klasse zu einer sogenannten abstrakten Klasse. Insbesondere kann von dieser Klasse keine Instanz gebildet werden. Eine Anweisung wie
grafikobjekt gr; // Fehler!! grafikobjekt ist abstraktist also nicht erlaubt.
Sinn abstrakter Klassen ist, daß die entsprechenden Methoden in
abgeleiteten Klassen definiert werden müssen, um eine Instanzenbildung
zuzulassen. Das Schlüsselwort virtual
ist zwingend notwendig um
einer Methode die Nullfunktion zuzuweisen.
Anwendungsmöglichkeiten für abstrakte Klassen sind z.B. das definierte Grafikobjekt, welches Grundfunktionen und -elemente eines Grafikobjekts bereitstellt. Es macht aber keinen Sinn eine Instanz dieser Klasse zu erzeugen, da das entsprechende Objekt nichts repräsentieren würde.