виртуальная функция const против виртуальной функции non-const

class Base
{
   public:
   virtual void func() const
   {
     cout<<"This is constant base "<<endl;
   }
};

class Derived : public Base
{
   public:
   virtual void func()
   {
     cout<<"This is non constant derived "<<endl;
   }
};


int main()
{
  Base *d = new Derived();
  d->func();
  delete d;

  return 0;
}

Почему вывод выводит «Это постоянная база». Однако, если я удаляю const в базовой версии func (), он выводит «Это не является производным от констант»

d-> func () должен вызывать производную версию правильно, даже если Base func () является константным, верно?

Ответы на вопрос(3)

Ваш ответ на вопрос