def COUNTABLE_H #define COUNTA

Автор admin Понедельник, 15 июня 2009 11:32

def COUNTABLE_H #define COUNTABLE_H #include class Countable { long count: protected: CountableO { count = 0; } virtual -CountableO { assert(count ==0): } public: long attach() { return ++count: } long detach О { return (–count > 0) ? count : (delete this, 0): } long refCountO const { return count: } }: #endif // COUNTABLE_H ///:- Очевидно, что этот класс не является самостоятельным, поскольку его конструктор объявлен защищенным (protected); он может использоваться только из дружественных или производных классов. Важно, что деструктор объявлен виртуальным — он вызывается только из команды delete this в detachQ, а мы хотим, чтобы производные объекты правильно уничтожались1. Класс DBConnection наследует как от Database, так и от Countable, и предоставляет статическую функцию create() для инициализации подобъекта Countable. Перед вами пример использования паттерна Фабричный метод, описанного в следующей главе: //: C09:DBConnection.h // Использование подключаемого класса #ifndef DBC0NNECTI0N_H #define DBC0NNECTI0N_H #i nclude И что еще важнее, мы не хотим непредсказуемых последствий. От


Комментарии закрыты.