Название: "проблема ромба" Отправлено: Racheengel от Сентябрь 21, 2016, 20:46 Не раз слышал мнения, что проблема ромба при множественном наследовании - надуманная и в принципе нет никаких ограничений на ее решение, введя правило, по которому первый наследник всегда побеждает. Ну т.е. при
class A { virtual void f1(); } class B: public A { virtual void f1(); } class C: public B { virtual void f1(); } class D: public B, public C { virtual void f1(); // B::f1() wins } Лично мое имхо - "ромб" - это следствие плохой архитектуры... А вы шо скажете? :) Название: Re: "проблема ромба" Отправлено: gil9red от Сентябрь 21, 2016, 21:09 Не нужно мудрить, имхо :)
В java вообще убрали множественное наследование, хотя есть возможность реализовываться от множества интерфейсов :) Название: Re: "проблема ромба" Отправлено: Igors от Сентябрь 22, 2016, 08:03 В java вообще убрали множественное наследование С каких это пор жаба стала авторитетом? Лично мое имхо - "ромб" - это следствие плохой архитектуры... Не исключено. Если 2 и более базовых класса имеют методы с одинаковыми именами - это должно насторожить Название: Re: "проблема ромба" Отправлено: Akon от Сентябрь 22, 2016, 11:27 Какие проблемы? Если при вызове неоднозначность выбора метода - компилятор скажет, выбрать конкретный метод можно с помощью квалифицированного вызова, ну и в наследнике можно явно перекрыть виртуальный метод для выбора базовой реализации.
Другое дело, когда один и тот же метод несет разный смысл. Таких ситуаций нужно избегать. Название: Re: "проблема ромба" Отправлено: Bepec от Сентябрь 22, 2016, 12:00 Наглядный пример выстрела в ногу. Если мозга нет, можно и шею свернуть :D
|