Синтаксис
Имя конструктора
должно совпадать с именем класса.
Допускается использовать несколько
конструкторов с одинаковым именем, но
различными параметрами
class
ClassWithConstructor {
private:
AnotherClass
object;
public:
/*
Инициализация внутреннего объекта с
помощью конструктора */
ClassWithConstructor(float
parameter): object(parameter) {}/* вызов
метода
AnotherClass(float); */
};
Параметры
для конструктора базового класса
задаются в определении конструктора
производного класса. В этом смысле
базовый класс выступает как класс,
являющийся членом производного класса:
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. Объекты классов создаются
снизу вверх: вначале базовые, затем
члены и, наконец, сами производные
классы. Уничтожаются они в обратном
порядке: сначала сами производные
классы, затем члены, а затем базовые.
Члены и базовые создаются в порядке
описания их в классе, а уничтожаются
они в обратном порядке.
Производные
классы должны обычно определять
конструктор копии и функцию operator=( )
ПОРЯДОК ВЫЗОВА
КОНСТРУКТОРОВ
Порядок вызова
конструкторов при создании объектов
производных
классов в С++ фиксирован - он идет от
корневого базового класса к производным
по дереву наследования. Прежде всего
строится базовый класс, затем производный.
Если базовый класс, в
свою очередь,
является про изводным, то процесс
рекурсивно повторяется до тех пор, пока
не будет достигнут корневой класс.ПОРЯДОК
ВЫЗОВА ДЕСТРУКТОРОВ
обратный к
порядку вызова конструкторов.