Язык программирования C++ для профессионалов

       

Конструкторы и деструкторы


Для некоторых производных классов нужны конструкторы. Если конструктор есть в базовом классе, то именно он и должен вызываться с указанием параметров, если таковые у него есть:

class employee { // ... public: // ... employee(char* n, int d); };

class manager : public employee { // ... public: // ... manager(char* n, int i, int d); };

Параметры для конструктора базового класса задаются в определении конструктора производного класса. В этом смысле базовый класс выступает как класс, являющийся членом производного класса:

manager::manager(char* n, int l, int d) : employee(n,d), level(l), group(0) { }

Конструктор базового класса employee::employee() может иметь такое определение:

employee::employee(char* n, int d) : name(n), department(d) { next = list; list = this; }

Здесь list должен быть описан как статический член employee. Объекты классов создаются снизу вверх: вначале базовые, затем члены и, наконец, сами производные классы. Уничтожаются они в обратном порядке: сначала сами производные классы, затем члены, а затем базовые. Члены и базовые создаются в порядке описания их в классе, а уничтожаются они в обратном порядке.



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