Бьерн Страуструп - Язык программирования С++. Главы 5-7 - Множественное вхождение базового класса
ОГЛАВЛЕНИЕ
Страница 41 из 70
6.5.1 Множественное вхождение базового класса
Возможность иметь более одного базового класса влечет за собой возможность неоднократного вхождения класса как базового. Допустим, классы task и displayed являются производными класса link, тогда в satellite он будет входить дважды:class task : public link {Но проблем не возникает. Два различных объекта link используются для различных списков, и эти списки не конфликтуют друг с другом. Конечно, без риска неоднозначности нельзя обращаться к членам класса
// link используется для связывания всех
// задач в список (список диспетчера)
// ...
};
class displayed : public link {
// link используется для связывания всех
// изображаемых объектов (список изображений)
// ...
};
link, но как это сделать корректно, показано в следующем разделе. Графически объект satellite можно представить так:
Но можно привести примеры, когда общий базовый класс не должен представляться двумя различными объектами (см. $$6.5.3).