Что происходит, когда в ромбовидной иерархии наследования виртуально только одна ветвь наследуется от конечного базовогоC++

Программы на C++. Форум разработчиков
Anonymous
Что происходит, когда в ромбовидной иерархии наследования виртуально только одна ветвь наследуется от конечного базового

Сообщение Anonymous »

У меня вопрос относительно виртуального базового класса. Чтобы решить проблему «ужасного алмаза смерти»/неоднозначности при множественном наследовании, вводится виртуальный базовый класс.

class A { public: void Foo() {} };
class B : public virtual A {};
class C : public virtual A {};
class D : public B, public C {};


Что произойдет, если ключевое слово virtual не будет использоваться в объявлении класса C. Не могли бы вы объяснить мне подробно?

class A { public: void Foo() {} };
class B : public virtual A {};
class C : public A {};
class D : public B, public C {};


Подробнее здесь: https://stackoverflow.com/questions/158 ... h-inherits

Вернуться в «C++»