Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT


Абстрактные классы


Виртуальные методы могут быть объявлены как чисто виртуальные. Для этого после описания метода указывается специальный спецификатор (= 0). Он означает, что описанные методы не определены.

Класс в котором определен хотя бы один чисто виртуальный метод называется абстрактным. Нельзя создавать объекты абстрактного класса. Абстрактный класс может использоваться только в качестве базового класса для построения других классов.

Класс, порожденный от абстрактного класса, должен переопределять описанные в нем чисто виртуальные методы. В противном случае этот класс также будет абстрактным.

В качестве примера абстрактного класса мы приведем класс Abstract, в котором описан чисто виртуальный метод PureFunc. Обратите внимание, что этот метод не определен в классе Abstract. Определение метода содержится только в порожденном классе Fact.

// Абстрактный класс Abstract

class      Abstract

{

public:

      // Чисто виртуальный метод, не имеет определения

      virtual int    PureFunc(void) = 0;

      void      SetValue(int i) {iValue = i;}

      int  iValue;

};

// Класс Fact

class      Fact : public Abstract

{

      int  PureFunc(void) {return iValue * iValue;}

};



Содержание раздела