Cтраница 2
Почему при множественном наследовании иерархическая структура превращается в гетерархическую. [16]
![]() |
Определения функций элементов класса Derived ( часть 4 из 6. [17] |
Заметьте, что множественное наследование указывается двоеточием (:) после имени класса ( class Derived) с последующим перечислением через запятую базовых классов. Отметим также, что конструктор Derived вызывает конструкторы каждого из своих базовых классов Basel и Base2 с использованием списка инициализаторов элементов. Конструкторы базового класса вызываются в той последовательности, в которой определено наследование, но не в той, в которой эти конструкторы упоминаются. [18]
В случае использования множественного наследования возникает ряд непростых и весьма интересных вопросов. Например, что произойдет, если оба базовых класса будут иметь одно и то же имя либо содержать виртуальные функции или данные с одинаковыми именами. Как инициализируются конструкторы разных базовых классов. Что произойдет, если два базовых класса будут произведены от одного и того же родительского класса. Все эти вопросы будут рассмотрены в следующем разделе, после чего можно переходить к практическому использованию множественного наследования. [19]
Промежуточным решением между одиночным и множественным наследованием классов может быть использование классов мандатов. Так, класс Horse можно произвести от двух базовых классов - Animal и Displayable, причем последний добавляет только некоторые методы отображения объектов на экране. [20]
Опыт показывает, что множественное наследование надо использовать умеренно, так как оно может усложнить программный код проекта. Многие проблемы, вначале решаемые с помощью множественного наследования, теперь решаются путем агрегирования ( вложения) классов. Тем не менее множественное наследование остается мощным средством программирования, от которого не следует огульно отказываться при разработке проектов. [21]
Классы VCL не поддерживают множественное наследование. [22]
Этот пример показывает механизм множественного наследования и знакомит с простейшей проблемой неопределенности. [23]
Таким образом, эмуляция множественного наследования в Фортране 90 вызывает не больше трудностей, чем реализация простого наследования. [24]
Но если обратиться к множественному наследованию, то механизмы его реализации в C и CLOS существенно отличаются. Поскольку в языке C не существует такого понятия, как порядок предшествования классов, то даже такой простой случай, как в рассмотренном выше примере Алмаз Никсона, приводит к неоднозначности. [25]
Версия Borland C предполагает так называемое множественное наследование, позволяющее создавать потомка от нескольких родителей, объединяя тем самым характерные особенности двух и более классов в одном. Опыт показывает, что наряду с очевидными преимуществами такого подхода при создании больших проектов часто возникают ситуации, при которых возникают неоднозначности, связанные с порождением класса от взаимоисключающих или противоречивых классов-родителей. [26]
В чем состоит проблема наложения методов при множественном наследовании. [27]
Надо отметить также, что интерфейсы обеспечивают возможности множественного наследования, отсутствующие в классах Delphi. Они широко применяются для распределенных объектов, использующих модели COM ( Component Object Model), CORBA ( Common Object Request Broker Architecture) и ряд других. [28]
Кратко определите каждый из следующих терминов: наследование, множественное наследование, базовый класс и производный класс. [29]
Действительно, если вы решите использовать в своей программе множественное наследование, следует учесть, что с отладкой программы могут возникнуть проблемы и чрезмерное усложнение программы, связанное с использованием этого подхода, не всегда оправдывается полученным эффектом. [30]