Implémentation d'un protocole de classe
Les classes peuvent être implémentées pour appliquer un protocole. Ces classes sont appelées « classes abstraites » car aucun objet du type classe ne peut être créé. Elles existent uniquement pour la dérivation.
Les classes sont des classes abstraites si elles contiennent des fonctions virtuelles pures ou si elles héritent de fonctions virtuelles pures et n'ont pas d'implémentation. Les fonctions virtuelles pures sont des fonctions virtuelles déclarées avec l'élément pure-specifier (= 0), comme suit :
virtual char *Identify() = 0;
La classe de base, Document, peut appliquer le protocole suivant à toutes les classes dérivées :
Une fonction Identify appropriée doit être implémentée.
Une fonction WhereIs appropriée doit être implémentée.
La spécification de ce protocole lors de la conception de la classe Document permet au concepteur de classes de s'assurer qu'aucune classe non abstraite ne peut être implémentée sans fonctions Identify et WhereIs. Par conséquent, la classe Document contient les déclarations suivantes :
// 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;
};