Поделиться через


Реализация протокола класса

Классы можно реализовать для принудительного применения протокола. Эти классы называются абстрактными классами, поскольку невозможно создать объект типа класса. Они используются исключительно для наследования.

Классы являются абстрактными, если они содержат чистые виртуальные функции или наследуют чистые виртуальные функции, не предоставляя реализацию для всех них. Чистые виртуальные функции — это виртуальные функции, объявленные с помощью 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;
};

См. также

Ссылки

Общие сведения о производных классах