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

   


Назад  |  Вперёд

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

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

              // ...
           };

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

              // ...
           };

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

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


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.