類別通訊協定實作
您可以實作類別以強制執行通訊協定。 這些類別稱為「抽象類別」,因為無法建立類別類型的物件。 這些類別只是為了進行衍生而存在。
如果類別包含純虛擬函式或繼承純虛擬函式,且不提供這些函式的實作,則為抽象類別。 純虛擬函式是以 pure-specifier (= 0) 宣告的虛擬函式,如下所示:
virtual char *Identify() = 0;
基底類別 Document 可能會對所有衍生類別強制執行下列通訊協定:
必須實作適當的 Identify 函式。
必須實作適當的 WhereIs 函式。
在設計 Document 類別時指定這類通訊協定,類別設計工具就能確保在沒有 Identify 和 WhereIs 函式的情況下,不會實作非抽象類別。 因此,Document 類別包含下列宣告:
// 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;
};