Виртуальные функции в конструкторе класса

Если вы вызываете виртуальную функцию в конструкторе, то будет вызвана та реализация, которая определена в данном классе, а не в наследнике.

Другими словами:

class A
{
public:
  A()
  {
    call();
  }
  virtual void call ()
  {
    printf("A");
  }
};
class B: public A
{
  B()
  {
    call();
  }
  virtual void call ()
  {
    printf("B");
  }
};
int main()
{
  B b;
}

В консоле вы увидите:

A
B

Теги: