Консультация № 175203
13.12.2009, 18:16
0.00 руб.
0 1 1
Здравствуйте эксперты, когда я создаю потомка какого-то класса, если я создаю конструктор своего класса то он используется вместо конструктора родителя, так же и с остальными функциями, можно ли как-то сделать так, чтобы исходный конструктор родителя использовался, а мой лишь дополнял его?

Обсуждение

давно
Профессор
230118
3054
13.12.2009, 18:37
общий
это ответ
Здравствуйте, Tribak.

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

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.
Объекты классов создаются снизу вверх: вначале базовые, затем
члены и, наконец, сами производные классы. Уничтожаются они в
обратном порядке: сначала сами производные классы, затем члены,
а затем базовые. Члены и базовые создаются в порядке описания их
в классе, а уничтожаются они в обратном порядке.
Форма ответа