The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

4.10 Множественное наследование

4.10 Множественное наследование

Предыдущая  Содержание  Следующая V*D*V

Поскольку мы используем простой ANSI-C, нельзя скрыть тот факт, что наследование означает одну структуру в начале другой. Повышающее приведение является ключом к повторному использованию метода суперкласса для объектов подкласса. Повышающее приведение от окружности обратно к точке осуществляется путём приведения адреса начала структуры; значение адреса не меняется.

Если мы включаем две или даже более структур в какую-то другую структуру и если мы готовы выполнять некоторые манипуляции с адресами во время повышающего приведения, то можно было бы назвать такой результат множественным наследованием: объект может вести себя так, как если бы он принадлежал к нескольким другим классам. Преимуществом представляется то, что не надо очень тщательно проектировать отношения наследования — можно быстро скидать классы вместе и наследовать всё, что кажется желательным. Очевидным недостатком является то, что должны быть выполнены манипуляции с адресами во время повышающего приведения прежде чем можно будет использовать методы суперкласса.

Всё действительно очень быстро может стать довольно запутанным. Рассмотрим текст и прямоугольник, каждый с унаследованной точкой отсчета. Мы можем собрать их вместе в кнопку — вот только вопрос, должна кнопка наследовать одну или две опорные точки. C++ разрешает любой подход с достаточно ловким маневрированием во время конструирования и повышающего приведения.

У нашего подхода делать всё на ANSI-C есть существенное преимущество: он не заслонять тот факт, что наследование — множественное или иным образом — всегда происходит путём включения. Включение, однако, также может быть выполнено в виде агрегата. Не совсем ясно, даёт ли множественное наследование программиста больше, чем усложняет определение языка и увеличение накладных расходов реализации. Мы будем стремиться делать всё просто и продолжим только с простым наследованием. Глава 14 покажет, что одна из главных целей множественного наследования, библиотечное объединение, часто может быть достигнута с помощью агрегатов и переадресации сообщений.

 

Предыдущая  Содержание  Следующая