Найти в Дзене
Айти Поц

Проблема множественного наследования или ромбовидное наследование | C++

В C++ есть небольшая проблема, связанная с множественным наследованием. На скрине видно, что при множественном наследовании в C++ конструктор предка вызывается два раза. Иногда это можно использовать как фичу, но в большинстве случаев логика программы бы нарушилась.


К примеру можно взять такой случай, мы делаем игру по гонки, у нас есть базовый класс Vehicle, и у него есть поле "Прочность", которое равно допустим 100. Унаследуем наш WaterCar от Car и Boat, если посмотреть на первую схему, то получается, что после того как прочность WaterCar станет равна 0, она опять будет равна 100. Нелогично.


Чтобы этого избежать, при множественном наследовании нужно не забыть добавить ключевое слово virtual.

Больше интересных постов у меня в Telegram-канале :)

Наука
7 млн интересуются