►Механизм, множественного наследования...298
Чтобы увидеть множественное наследование в действии, я продолжу пример с диваном-кроватью. На рис. 26.1 приведена схема наследования дивана-кровати ( класс SleeperSofa ). Обратите внимание, что этот класс наследует свойства и от класса Bed ( Кровать ), и от класса Sofa ( Диван ), т.е. наследует свойства обоих классов.
Рис. 26.1. Иерархия классов дивана-кровати
_________________
298 стр. Часть 5. Полезные особенности
Программная реализация класса SleeperSofa выглядит следующим образом.
//
/* MultipleInheritance — класс, являющийся наследником */
/* нескольких базовых классов */
//
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std ;
class Bed
{
public :
Bed( ) { }
void sleep( ) { cout << "Спим" << endl ; }
int weight ;
} ;
class Sofa
{
public :
Sofa( ) { }
void watchTV( ) { cout << "Смотрим телевизор" << endl ; }
int weight ;
} ;
/* SleeperSofa — диван-кровать */
class SleeperSofa : public Bed , public Sofa
{
public :
SleeperSofa( ) { }
void foldOut( ) { cout << "Раскладываем диван-кровать"
<< endl ; }
} ;
int main( int nNumberofArgs , char* pszArgs[ ] )
{
/* печать кириллицы, если Вы не установите программки gccrus.exe и g++rus.exe */
setlocale ( LC_ALL , ".1251" ) ;
SleeperSofa ss ;
/* Посмотрим телевизор на диване... */
ss.watchTV( ) ; /* Sofa::watchTV( ) */
/* ...разложим его в кровать... */
ss.foldOut( ) ; /* SleeperSofa::foldOut( ) */
/* ...и ляжем спать */
ss.sleep( ) ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
В этом примере класс SleeperSofa наследует оба класса — Bed и Sofa. Это видно из их наличия в объявлении класса SleeperSofa, который наследует все члены от обоих базовых классов. Таким образом, допустимы оба вызова — как ss.sleep( ), так и ss.watchTV( ). Вы можете использовать SleeperSofa и как Bed, и как Sofa. Кроме того, класс SleeperSofa имеет собственные члены, например foldOut( ). В результате мы получим следующий вывод программы:
Смотрим телевизор
Раскладываем диван-кровать
Спим
Press any key to continue...
_________________
299 стр. Глава 26. Множественное наследование
Больше книг — больше знаний!
Заберите 20% скидку на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ