Бьерн Страуструп - Язык программирования С++. Главы 5-8
Страница 30. Конструкторы и деструкторы



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(n,d), level(l), group(0)
       {
       }

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

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

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

 
« Предыдущая статья   Следующая статья »