Несколько базовых классов

Как описано в разделе множественное наследованиекласс может наследоваться от более чем одного базового класса.В модели множественн-наследования (где классы являются производными от более чем одного базового класса), базовые классы определены с помощью базовый список элемент грамматики (см. раздел грамматики in Обзор).Например, объявление класса для CollectionOfBook, извлекается из Collection и Bookможет быть указан.

// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
    // New members
};

Порядок, в котором определены базовые классы не существенны за исключением некоторых случаях, где вызывают конструкторы и деструкторы.В этих случаях порядок, в котором базовые классы определены влияет на следующее:

  • Порядок, в котором выполняется инициализация конструктором.Если данный код использует Book часть CollectionOfBook необходимо инициализировать перед Collection часть спецификации, порядок важен.Инициализация происходит в порядке классы определены в базовый список.

  • Порядок, в котором вызываются деструкторы для очистки.С другой стороны, если заданная часть" класса "должна присутствовать, когда другая часть разрушается, порядок важен.Деструкторы вызываются в обратном порядке классов, определенных в базовый список.

    ПримечаниеПримечание

    Порядок спецификации базовых классов может влиять на макет памяти класса.Не делайте никаких решений программирования на основе порядке базовых членов в памяти.

При указании базовый списокнельзя указать одно и то же имя класса несколько раз.Однако возможно для класса быть косвенным основанием к производному классу несколько раз.

См. также

Ссылки

Производные классы