When a method is declared as virtual
in a class, its overrides in derived classes are automatically considered virtual
as well, and the C++ language ma
Yeah, it would really be nicer to make the compiler enforce the virtual in this case, and I agree that this is a error in design that is maintained for backwards compatibility.
However there's one trick that would be impossible without it:
class NonVirtualBase {
void func() {};
};
class VirtualBase {
virtual void func() = 0;
};
template
class CompileTimeVirtualityChoice : public VirtualChoice {
void func() {}
};
With the above we have compile time choice wether we want virtuality of func or not:
CompileTimeVirtualityChoice -- func is virtual
CompileTimeVirtualityChoice -- func is not virtual
... but agreed, it's a minor benefit for the cost of seeking a function's virtuality, and myself, I always try to type virtual everywhere where applicable.