У меня есть ситуация, подобная приведенной ниже (код НЕ точный, просто чтобы донести свою мысль).Когда я звоню D.A()
, я ожидаю, что будет напечатано слово "Desc"
, но вместо этого напечатано "Base"
.
class Base {
public:
void A() { B(); }
virtual void B() { cout << "Base"; }
}
class Descendant : public Base {
public:
virtual void B() overriden { cout << "Desc"; }
}
main () {
Descendant D;
D.A();
}
Здесь должно быть что-то концептуальное, чего я упускаю.Должно ли D.A()
вызвать "Desc"
для печати?Если нет, то почему?