170 похожих чатов

Народ, а скажите пожалуйста, в каких задачах не обойтись без

виртуального множественного наследования?

15 ответов

9 просмотров

Реализация интерфейса

Ну начнем с того что наследование в целом опционально

Ситуация, в которую ты сам себя загнал, это если у двух классов есть общий предок

https://en.m.wikipedia.org/wiki/Virtual_inheritance Статья на самом деле отвечает на этот вопрос

Думаю нет таких задач Как и задач в которых без множественного наследования не обойтись

Реализация COM объектов

Богдан- Автор вопроса
Dmitry Sokolov
Думаю нет таких задач Как и задач в которых без мн...

Я знаю кейс когда без множественного наследования не обойтись - это overload-visitor с косвенно-рекурсивными лямбдами Благодаря множественному наследованию мы можем отнаследоваться от нескольких лямбд и построить новый тип с перегруженным оператором круглых скобок auto fn = make_overload( [](this auto&& self, int val){ ... }, [](this auto&& self, double val){ ... }, [](this auto&& self, SomeType obj){ ... } ); fn(1); fn(1.23); fn(SomeType()); Разве можно получить такое (без оверхеда) если бы С++ не поддерживал бы множественное наследование?

Богдан- Автор вопроса
Богдан
Я знаю кейс когда без множественного наследования ...

Но это кейс обычного множественного наследования. И хотелось бы найти подобный пример (где раскрывается суть) для виртуального множественного наследования

Богдан
Я знаю кейс когда без множественного наследования ...

Это синтаксический сахар который позволяет объединить несколько функторов в один тип. Без него можно обойтись.

Ilya Zviagin
Реализация COM объектов

Реализация COM делается через .QueryIntetface, где множественное наследование вообще не к месту. В COM вообще наследования нет. Есть агрегирование.

В пределе можно и без машины обойтись. На бумажке посчитать

Michael
В пределе можно и без машины обойтись. На бумажке ...

это если мы не делаем систему реального времени, например

Int Unsigned
Реализация COM делается через .QueryIntetface, где...

Реализацию COM объекта на C++ как раз удобнее всего делать через множественное наследование, когда твой объект реализует несколько интерфейсов. QueryInterface в этом случае становится тривиальным возвратом this для соответствующего guid. С композицией же ты замучаешься его реализовывать.

Anatoly Shirokov
Реализацию COM объекта на C++ как раз удобнее всег...

Да. Сорри. Почему то я читая "множественное" представлял ромбическое. А у ком Unknown не виртуальный.

Богдан
Я знаю кейс когда без множественного наследования ...

Этот паттерн возможно и в виде цепочки наследования реализовать. Оверхед будет на этапе компиляции, но не в рантайме.

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта