Вторник, 26.11.2024, 06:02
Приветствую Вас Гость | Регистрация | Вход

Учебный портал 2009-2016

Меню сайта
Категории раздела
№1 [2]
Все для учителей!
Информатика [60]
Тут для учителей информатики
Математика [102]
Тут все для учителей математики
Русский язык [33]
Для учителей русского языка
География [20]
Тут все только для учителя географии
Физика и астрономия [29]
Про физику
Химия и Биология [35]
История и обществознание [33]
Библиотекарю [6]
Начальные классы [22]
Экономика [13]
Для учителей экономики
Директору и завучу школы [12]
Иностранные языки [18]
Физическая культура [16]
Технология [13]
Психологу [14]
ОБЖ [15]
Софт для учителя [25]
Готовимся к ЕГЭ [21]
Школьные сценарии [8]
Поиск
Вход на сайт
Статистика

Онлайн всего: 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 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]