Implementazione protocolli di classi

Le classi possono essere implementate per applicare un protocollo. Queste classi sono definite "classi astratte", perché non è possibile creare alcun oggetto del tipo di classe. Esistono esclusivamente per la derivazione.

Le classi sono astratte se contengono o ereditano funzioni virtuali pure e non forniscono un'implementazione per tutte le stesse funzioni virtuali pure. Le funzioni virtuali pure sono funzioni virtuali dichiarate con pure-specifier (= 0), come indicato di seguito:

virtual char *Identify() = 0;

La classe base, Document, può imporre il protocollo seguente a tutte le classi derivate:

  • Una funzione Identify appropriata deve essere implementata.

  • Una funzione WhereIs appropriata deve essere implementata.

Se tale protocollo viene specificato durante la progettazione della classe Document, progettazione classi sa che non è possibile implementare alcuna classe non astratta in assenza delle funzioni Identify e WhereIs. La classe Document, pertanto, contiene le dichiarazioni seguenti:

// 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;
};

Vedere anche

Riferimenti

Cenni preliminari sulle classi derivate