Implementacja protokołu klasy
Klasy można zaimplementować do wymuszania protokołu.Ponieważ żaden obiekt typu klasy można utworzyć klasy te są nazywane "klasy abstrakcyjne".Istnieją jedynie dla wyprowadzania.
Klasy są klasy abstrakcyjne, jeśli zawierają one czystego funkcje wirtualnych lub jeśli dziedziczą czystego funkcje wirtualnych i nie przewidują implementacja je wszystkie.Czysty funkcje wirtualnych są funkcje wirtualnych zadeklarowana z czystego specyfikatora (= 0), w następujący sposób:
virtual char *Identify() = 0;
Klasa podstawowa, Document, może narzucić następujący protokół w sprawie wszystkich klas pochodnych:
Posiadać odpowiednią Identify musi być zaimplementowana funkcja.
Posiadać odpowiednią WhereIs musi być zaimplementowana funkcja.
Określając takiego protokołu, przy projektowaniu Document klasy, Projektant klasy można zapewnić że nie nieabstrakcyjnej klasie mogą być realizowane bez Identify i WhereIs funkcji.Document Klasy, w związku z tym, zawiera następujące deklaracje:
// 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;
};