C-Programmierung

Pure Virtual

Virtuelle Methoden | | Abstrakte Klassen

Man sagt, dass eine Methode “abstrakt” ist, wenn es keine Implementierung dafür gibt. In einer abgeleiteten Klasse kann jedoch eine Implementierung erfolgen.

Die Klasse einer abstrakten Methode wird dadurch ebenso zu einer abstrakten Klasse. Von ihr dürfen keine Instanzen erzeugt werden, da sie noch abstrakte Methoden enthält und daher unvollständig implementiert ist.

Wenn also in einer Basisklasse eine abstrakte Methode spezifiziert werden soll, die in einer abgeleiteten Klasse definiert werden muss, wird die Methode in der Basisklasse als pure virtual deklariert:

   virtual ... method(...) = 0; // pure virtual method without implementation

Dies impliziert, dass in jeder Ableitung einer abstrakten Klasse die abstrakten Methoden definiert werden müssen, da sonst keine Instantiierung möglich ist.

Unterschied zu virtual: Eine virtuelle Methode kann überschrieben werden, muss aber nicht.

Dies ist insbesondere für Interfaces von Bedeutung.

Virtuelle Methoden | | Abstrakte Klassen

Options: