Предположим, у нас есть следующий код:
class Base
{
public:
virtual void foo() const
{ cout << "In Base::foo\n"; }
}
class Derived : public Base
{public:
virtual void foo()
{ cout << "In Derived::foo\n"; }
}
void main()
{
Base* b = new Derived();
b->foo();
delete b;
}
Это даст нам следующий вывод: In Base::foo
.
Теперь предположим, что я хочу получить - без изменения основной функции -следующий вывод вместо приведенного выше:
In Derived::foo
Насколько я понимаю, я должен переопределить функцию foo () of в базе, чтобы получить вывод метода foo () в наследующем классе, который является классом 'Derived'.Но проблема в том, что в этом случае я не могу использовать команду override
, потому что метод в базе определяется как константа, а в другом классе это не так.
Итак, как я долженесли тогда переопределить этот метод?