Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Виртуальные базовые классы



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

Виртуальный базовый класс имеет следующие свойства:

- объявляется добавлением ключевого слова 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...