Что-то, что сбивает меня с толку в наследовании виртуальных базовых классов ... Учитывая следующие классы:
class A
{
virtual void foo() = 0;
}
class B : virtual A
{
void foo() { /* do X */ }
}
class C : virtual A
{
void foo() { /* do Y */ }
}
class D : B, C
{
}
Будет ли это компилироваться? Если да, то каков будет результат следующего кода:
D d;
A* a = &d;
a->foo();