Виртуальные методы в виртуальном базовом классе

Что-то, что сбивает меня с толку в наследовании виртуальных базовых классов ... Учитывая следующие классы:

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();
8
задан sooniln 7 July 2011 в 18:12
поделиться