конструкторы не наследуются, поэтому производный класс должен иметь собственный конструктор.
Порядок вызова конструктора в производном классе осуществляется по следующим правилам:
  1. если в конструкторе производного класса осуществляется явный вызов конструкторов базового класса. Если он отсутствует, автоматически вызывается конструктор базового класса по умолчанию (тот, который можно вызывать без параметров)
  2. для иерархии состоящей из нескольких уровней, конструкторы базовых классов вызываются начиная с верхнего уровня. Потом выполняются конструкторы тех элементов класса, которые являются объектами в порядке их объявления в классе. Затем исполняется конструктор класса.
  3. В случае множественного наследования при наличии нескольких базовых классов, их конструкторы вызываются в порядке объявления. Если конструктор базового класса требует указания параметров, он должен быть вызван явным образом в конструкторе производного класса в списке инициализации.
  4. Не наследуются операция присваивания, следовательно её требуется явно определить в производном классе
Вызов функции базового класса предполагает копирование фрагментов кода из функций базового класса в функции производного. При этом осуществляется сокращение объектного кода и достигается упрощение модификации программы.
Правила наследования деструктора
  1. Деструкторы не наследуются. Если программист не описал в производном классе деструктор, он формируется по умолчанию и вызывает деструкторы всех базовых классов
  2. В отличии от конструктора при описании деструктора производного класса в нем не требуется явно вызывать деструкторы базовых классов, т.к. это будет сделано автоматически.
  3. Для иерархии классов, состоящих из нескольких уровней, деструкторы вызываются в порядке строго обратном вызову конструкторов. Сначала вызывается деструктор производного класса, потом деструктор базового класса.
Доступ к переопределенному методу базового касса выполняется через имя, уточненное с помощью операции доступа к области видимости (::).
Присваивание объектов при наследовании
Для объектов возможно выполнение операции присваивания. Смысл этой операции заключается в том, что происходит поэлементное присваивание содержимого полей одного объекта полями другого. Данная операция применима как к объектам одного класса, так и объектам классов одной иерархии. Причем разрешается только объектам родительских классов присваивать значение производных классов. Присваивание в обратном порядке не допускается т.к. в объекта потомков объявляются дополнительные поля, а в случае присваивания объекту класса потомка значения объекта родительского класса эти дополнительные поля остаются неопределенными.
Формат записи операции присваивания выглядит следующим образом:
<объект родительского класса> = <объект производного класса>