Why does the derived class have to declare its methods as virtual for dynamic binding to work even though the methods of the base class are declared virtual?
It doesn't have to. If a method is declared virtual in a base class, overriding it in a derived class makes the overriding function virtual as well, even if the virtual keyword is not used.
It doesn't.
class Base
{
virtual void foo() {}
};
class Derived : public Base
{
void foo() {}
}
in this code foo() is still virtual in the Derived class even though it isn't declared as such.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With