Бьерн Страуструп - Язык программирования С++. Главы 5-7 - Конструкторы и деструкторы
ОГЛАВЛЕНИЕ
Страница 31 из 70
6.2.2 Конструкторы и деструкторы
Для некоторых производных классов нужны конструкторы. Если конструктор есть в базовом классе, то именно он и должен вызываться с указанием параметров, если таковые у него есть: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::employee() может иметь такое определение:
: employee(n,d), level(l), group(0)
{
}
employee::employee(char* n, int d)Здесь list должен быть описан как статический член employee.
: name(n), department(d)
{
next = list;
list = this;
}
Объекты классов создаются снизу вверх: вначале базовые, затем члены и, наконец, сами производные классы. Уничтожаются они в обратном порядке: сначала сами производные классы, затем члены, а затем базовые. Члены и базовые создаются в порядке описания их в классе, а уничтожаются они в обратном порядке.