Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Виртуальным базовым классом называется общий базовый класс для нескольких производных классов, производные классы от которых наследуют только одну копию общего базового класса.
Виртуальный базовый класс имеет следующие свойства:
- объявляется добавлением ключевого слова virtual к атрибуту наследования базовых классов, производным от общего виртуального базового класса; пример для предыдущей схемы:
class cl1 {...}//виртуальный базовый класс
class cl2:virtual public cl1 {...}
class cl3:virtual public cl1 {...}
class cl4:public cl2,public cl3 {...}
- наследуется только одна копия виртуального базового класса в классах, порожденных от производных классов с общим виртуальным базовым классом;
- сохраняются все правила доступа к наследуемым и собственным элементам производного класса, но устранена неоднозначность при доступе к унаследованным элементам виртуального базового класса (доступ прямо по имени элемента), т.к. имеется только одна копия виртуального базового класса; например, доступ к элементу tabn класса cl1 возможен с помощью выражения obj4.tabn;
- устранена неоднозначность доступа при совпадении имен элементов в виртуальном базовом классе и производных от него, т.к. действует приоритет самого дальнего имени от вершины иерархии; например, при наличии элемента-функции vvod() в классах cl1 и cl2 оператор obj4.vvod() вызовет элемент-функцию vvod() класса cl2.
Дата публикования: 2014-11-26; Прочитано: 961 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!