Cтраница 2
Поскольку производный класс наследует элементы базового класса, то при создании объекта производного класса должен быть вызван конструктор базового класса для задания начальных значений элементам базового класса, содержащимся в объекте производного класса. В конструкторе производного класса при явном вызове конструктора базового класса может быть предусмотрен список инициализаторов элементов; в противном случае конструктор производного класса будет неявно вызывать конструктор базового класса с умолчанием. [16]
Определение класса Basel ( часть 1 из 6.| Определение класса Base2 ( часть 2 из 6. [17] |
Обратите внимание, как обозначается сложное наследование с помощью двоеточия (:) после class Derived - просто списком открытых базовых классов, разделенных запятыми. Заметьте также, что конструктор производного класса Derived вызывает каждый из своих базовых конструкторов, Basel и Base2, посредством синтаксиса инициализатора элементов. [18]
Множественное наследование указывается двоеточием (:) после имени производного класса и перечислением списка разделенных запятыми базовых классов после двоеточия. Для вызова конструкторов базового класса в конструкторе производного класса используется список инициализаторов элементов. [19]
При наследовании конструкторы базовых классов вызываются в той последовательности, в которой указано наследование в определении производного класса. На это не влияет последовательность, в которой указаны конструкторы базовых классов в описании конструктора производного класса. [20]
Конструкторы элементов-объектов вызываются в порядке, в котором элементы объявлены. При наследовании конструкторы базовых классов вызываются в порядке, в котором указано наследование, и перед конструктором производного класса. [21]
Поскольку производный класс наследует элементы базового класса, то при создании объекта производного класса должен быть вызван конструктор базового класса для задания начальных значений элементам базового класса, содержащимся в объекте производного класса. В конструкторе производного класса при явном вызове конструктора базового класса может быть предусмотрен список инициализаторов элементов; в противном случае конструктор производного класса будет неявно вызывать конструктор базового класса с умолчанием. [22]
Созданный объект класса Dog. [23] |
При создании объекта в производном классе, например в классе Dog, сначала вызывается конструктор базового, а затем - производного класса. Схематично объект класса Dog показан на рис. 11.2. Обратите внимание, что объект производного класса состоит как бы из двух частей, одна из которых создается конструктором базового класса, а другая - конструктором производного класса. [24]