Бьерн Страуструп - Язык программирования С++. Главы 5-8
Страница 40. Множественное вхождение базового класса



6.5.1 Множественное вхождение базового класса

 Возможность иметь более одного базового класса влечет за собой
 возможность неоднократного вхождения класса как базового. Допустим,
 классы task и displayed являются производными класса link, тогда
 в satellite он будет входить дважды:

          class task : public link {
             // link используется для связывания всех
             // задач в список (список диспетчера)

             // ...
          };

          class displayed : public link {
             // link используется для связывания всех
             // изображаемых объектов (список изображений)

             // ...
          };

 Но проблем не возникает. Два различных объекта link используются
 для различных списков, и эти списки не конфликтуют друг с другом.
 Конечно, без риска неоднозначности нельзя обращаться к членам класса
 link, но как это сделать корректно, показано в следующем разделе.
 Графически объект satellite можно представить так:

 Но можно привести примеры, когда общий базовый класс не должен
 представляться двумя различными объектами (см. $$6.5.3).

 
« Предыдущая статья   Следующая статья »