Klassenprotokollimplementierung
Klassen können implementiert werden, um ein Protokoll zu erzwingen. Diese Klassen werden als abstrakte Klassen bezeichnet, da kein Objekt des Klassentyps erstellt werden kann. Sie existieren nur für die Ableitung.
Klassen sind abstrakte Klassen, wenn diese rein virtuelle Funktionen enthalten oder wenn sie rein virtuelle Funktionen erben und nicht für alle eine Implementierung bereitstellen. Rein virtuelle Funktionen sind virtuelle Funktionen, die mit dem pure-specifier (= 0) deklariert werden, wie nachfolgend veranschaulicht:
virtual char *Identify() = 0;
Die Basisklasse, Document, erzwingt möglicherweise das folgende Protokoll für alle abgeleiteten Klassen:
Eine entsprechende Identify-Funktion muss implementiert werden.
Eine entsprechende WhereIs-Funktion muss implementiert werden.
Durch das Angeben eines solchen Protokolls bei Entwerfen der Document-Klasse kann gewährleistet werden, dass keine nicht abstrakte Klasse ohne Identify und WhereIs-Funktionen implementiert werden kann. Deshalb enthält die Klasse Document diese Deklarationen:
// deriv_ClassProtocolImplementation.cpp
// compile with: /LD
class Document {
public:
// Requirements for derived classes: They must implement
// these functions.
virtual char *Identify() = 0;
virtual char *WhereIs() = 0;
};