Доброго времени суток,
Вопрос в следующем, чем отличается виртуальное наследование от обычного наследования.
Я знаю, что если сделать следующее:
class A {public: int x();};
class C: public A {};
class D: public A {};
class E: public C, public D {};
E EObject;
EObject.x(); //Работать не будет ввиду неизвестности какой код вызывать C::x() или D::x()
А если наследовать виртуально, то предок будет считаться одним и все будет работать. Но вот зачем это нужно и где применяется то и другое наследование ???