Вторник, 26.11.2024, 06:02
Приветствую Вас Гость | Регистрация | Вход
|
Учебный портал 2009-2016 |
Статистика |
---|
Онлайн всего: 2 Гостей: 2 Пользователей: 0 |
|
Все файлы
Экзамен по информатике "Множественное наследование"
| 12.06.2011, 12:53 |
Множественное наследование Множественное наследование означает, что класс имеет несколько базовых классов. Если в базовых классах есть одноименные элементы, при этом может произойти конфликт идентификаторов, который устраняется с помощью операции доступа к области видимости: class monstr{ public: int get__hedlth(): }: Глава 5. Наследование 209 class hero{ public: int get_health(); class ostrich: public monstr. public hero{ }: ' int main(){ ostrich A: cout « A.monstr::get_health(): cout « A.hero: :get__health(): } Как видно из примера, для вызова метода gethealth требуется явно указывать класс, в котором он описан. Использование обычной для вызова метода класса конструкции A.get_health() приведет к ошибке, поскольку компилятор не в состоянии разобраться, к методу какого из базовых классов требуется обратиться. Если у базовых классов есть общий предок, это приведет к тому, что производный от этих базовых класс унаследует два экземпляра полей предка, что чаще всего является нежелательным. Чтобы избежать такой ситуации, требуется при наследовании общего предка определить его как виртуальный класс: class monstr{ }: class daemon: virtual public monstr{ class lady: virtual public monstr{ class baby: public daemon, public lady{ }: Класс baby содержит только один экземпляр полей класса monstr. Если базовый класс наследуется и как виртуальный, и обычным образом, в производном классе будут присутствовать отдельные экземпляры для каждого невиртуального вхождения и еще один экземпляр для виртуального. Множественное наследование применяется для того, чтобы обеспечить производный класс свойствами двух или более базовых. Чаще всего один из этих классов является основным, а другие обеспечивают некоторые дополнительные свойства, поэтому они называются классами подмешивания. По возможности классы подмешивания должны быть виртуальными и создаваться с помощью конструкторов без параметров, что позволяет избежать многих проблем, возникающих при ромбовидном наследовании (когда у базовых классов есть общий предок).
|
Категория: Информатика | Добавил: @RUS@
|
Просмотров: 675 | Загрузок: 0
|
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|