Russian Qt Forum
Ноябрь 22, 2024, 18:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: "проблема ромба"  (Прочитано 4726 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Сентябрь 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
}

Лично мое имхо - "ромб" - это следствие плохой архитектуры... А вы шо скажете? Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Сентябрь 21, 2016, 21:09 »

Не нужно мудрить, имхо Улыбающийся
В java вообще убрали множественное наследование, хотя есть возможность реализовываться от множества интерфейсов Улыбающийся
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Сентябрь 22, 2016, 08:03 »

В java вообще убрали множественное наследование
С каких это пор жаба стала авторитетом?

Лично мое имхо - "ромб" - это следствие плохой архитектуры...
Не исключено. Если 2 и более базовых класса имеют методы с одинаковыми именами - это должно насторожить
Записан
Akon
Гость
« Ответ #3 : Сентябрь 22, 2016, 11:27 »

Какие проблемы? Если при вызове неоднозначность выбора метода - компилятор скажет, выбрать конкретный метод можно с помощью квалифицированного вызова, ну и  в наследнике можно явно перекрыть виртуальный метод для выбора базовой реализации.

Другое дело, когда один и тот же метод несет разный смысл. Таких ситуаций нужно избегать.
Записан
Bepec
Гость
« Ответ #4 : Сентябрь 22, 2016, 12:00 »

Наглядный пример выстрела в ногу. Если мозга нет, можно и шею свернуть Веселый
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.