Class Protocol Implementation
Classes can be implemented to enforce a protocol. These classes are called "abstract classes" because no object of the class type can be created. They exist solely for derivation.
Classes are abstract classes if they contain pure virtual functions or if they inherit pure virtual functions and do not provide an implementation for them all. Pure virtual functions are virtual functions declared with the pure-specifier (= 0
), as follows:
virtual char *Identify() = 0;
The base class, Document
, might impose the following protocol on all derived classes:
An appropriate
Identify
function must be implemented.An appropriate
WhereIs
function must be implemented.
By specifying such a protocol when designing the Document
class, the class designer can be assured that no nonabstract class can be implemented without Identify
and WhereIs
functions. The Document
class, therefore, contains these declarations:
// 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;
};