виртуальная функция 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 () является константным, верно?