сутствие виртуального деструкт
Автор admin
Понедельник, 15 июня 2009 11:32
сутствие виртуального деструктора в базовом классе является ошибкой. Наследование реализации 449 #include #include “Countable.h” #include “Database.h” using std::string; class DBConnection : public Database, public Countable { DBConnection(const DBConnectionS): // Запрет копирования DBConnectionS operator=(const DBConnectionS); protected: DBConnectionCconst string& dbStr) throw(DatabaseError) : Database(dbStr) { openO: } -DBConnectionO { closeO; } public: static DBConnection* create(const string& dbStr) throw(DatabaseError) { DBConnection* con = new DBConnection(dbStr): con->attach(): assert(con->refCount() == 1): return con: } // Другие нужные функции… }: #endif ///:- DBC0NNECTI0N_H ///:- Мы получаем подключение к базе данных с подсчетом ссылок без модификации класса Database. Новая система с подсчетом ссылок гарантирует, что связь с базой не окажется преждевременно прерванной. При открытии и закрытии подключения (соответственно конструктором и деструктором DBConnection) используется идиома получения ресурсов при инициализации (RAII), упоминавшаяся в главе 1. Это упрощает работу с классом
Комментарии закрыты.
Последние комментарии