Виртуальное наследование в C++, когда использовать?

Виртуальное наследование в C++, гарантирует нам, что только одна копия переменных-членов базового класса наследуется производными классами. Без виртуального наследования, если два класса B и C наследуются от класса A, и класс D наследуется от обоих классов B и C, то D будет содержать две копии переменных-членов A: одну через B и одну через C.

Вместо этого, если классы B и C виртуально наследуются от класса A, то объекты класса D будут содержать только один набор переменных-членов из класса A.

Эта техника полезна, когда вам приходится иметь дело с множественным наследованием, и нужно решить проблему ромбовидного наследования.

Рассмотрим следующую иерархию классов, представляющую проблему ромба, хоть и не с чистыми абстракциями.

#IT #itвроссии #itsphere #код #кодинг #обучение #айти
Виртуальное наследование в C, когда использовать? | Сетка — новая социальная сеть от hh.ru
repost

320

input message

напишите коммент

· 16.09

мне вот интересно, используют ли в здравом уме наследование от более чем одного не виртуального предка в реальной жизни? и зачем? плюсы не родной язык, родной [c]. около 5 лет пишу на плюсах и упорно смотрю на множественное наследование как на протокол. что я упускаю и что стоит почитать?

ответить

17.09

В целом сложная тема.

https://www.simplilearn.com/tutorials/cpp-tutorial/multiple-inheritance-in-cpp

Эффективное использование C++ Скотта Майерса

https://isocpp.org/wiki/faq/multiple-inheritance

ответить

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь