добавление ключевого слова virtual к перечисленным базовым классам 
указывает компилятору, что в последующих выводах классов, также наследующих Jennis или 
McDougies, должна существовать только одна копия этих двух базовых классов. 
Аналогично, в классах Ted и Alice (строки 43-52) базовые классы указаны виртуальными. 
    Теперь можно спроектировать класс Corporation (строки 54-64). Как и ранее, 
класс наследует базовые McDougies, Ted и Alice. Койечно, с объявлением 
McDougies виртуальным базовым классом в итоге будет существовать только одна копия 
класса Corporation, несмотря на то, что Ted и Alice также выведены из класса McDougies. 

    ЗАМЕЧАНИЕ 

    Ted и Alice также могли бы быть объявлены виртуальными базовыми классами в 
строках 56—57. Это было бы необходимо только в том случае, если бы в последующих 
выводах из класса Corporation также наследовались бы и эти  классы. 


    Использование Borland ObjectBrowser 

    К сожалению, нет ничего, кроме нескольких рисунков, что помогло бы 
разъяснить родственные взаимоотношения в множестве производных классов. Но 
если у вас установлена Microsoft Windows, вы можете использовать ObjectBrowser 
в интегрированной среде для отображения связанных классов и их членов. Вы 
сможете пользоваться им независимо от того, пишете ли вы программы для Windows 
или же для DOS. 
    ObjectBrowser прост в использовании, но доступен только в интегрированной среде. 
После компиляции CONGLOM в виде EasyWin-приложения (если у вас возникли проблемы, 
обратитесь к главе 2) следует выбрать View\Classes для просмотра графической схемы 
классов программы и их взаимосвязей (рис. 14.14). 
   Поскольку в модуле CONGLOM также используются и потоки ввода-вывода для 
отображения, на схеме показаны   ios, streambuf и другие классы из стандартных библиотек, 
поставляемых вместе с Borland C++. 
   Двойной щелчок мыши на любом классе (например, McDougies) приведет к открытию окна, 
демонстрирующего содержимое класса (рис. 14.15). Вы можете затем выбрать любую строку 
в окне для просмотра ее определения. Также попробуйте выбрать фильтры — F (функции), 
V (переменные), I (наследованные объявления ) и V (виртуальные функции) для изменения 
вида информации, отображаемой в окне. 

    Рис 14.14. Классы CONGLOM и их взаимосвязи 

    Рис. 14.15. Содержимое McDougies в окне ObjectBrowser 


    Резюме 

    .Простое наследование описывает взаимосвязи между классами, один из которых 
выводится из другого. Из одного базового класса могут выводиться несколько классов. 

    Множественное наследование описывает родственные взаимосвязи классов, 
которые выводятся из нескольких базовых классов. 

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

    Защищенные члены класса — нечто среднее между закрытыми и открытыми членами 
класса. Подобно закрытым, защищенные члены недоступны вне класса. Подобно 
открытым, защищенные члены доступны в производных классах, наследующих эти 
члены из базового класса. 

    Производный класс наследует все имеющиеся в наличии данные- и функции-члены 
из базового класса за гключением конструкторов и деструкторов.

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


    Глава14. Объектно-ориентированное программирование 365 
