Перейти к основному содержимому

Конструкторы и деструкторы производных классов

Поскольку конструкторы не наследуются, при создании производного класса наследуемые им данные-члены должны инициализироваться конструктором базового класса. Конструктор базового класса вызывается автоматически и выполняется до конструктора производного класса. Параметры конструктора базового класса указываются в определении конструктора производного класса. Таким образом происходит передача аргументов от конструктора производного класса конструктору базового класса. Например:

class Base {
int a, b;

public:
Base(int x, int y) {
a = x;
b = y;
}
};
class Derived : public Base {
int sum;

public:
Derived(int x, int y, int s) : Base(x, y) { sum = s; }
};

Классы конструируются снизу вверх: сначала базовый, а потом сам производный класс. Таким образом, объект производного класса содержит в качестве подобъекта объект базового класса.

Уничтожаются объекты в обратном порядке: сначала производный, а потом базовый объект.

Таким образом, порядок уничтожения объекта противоположен по отношению к порядку его конструирования.