virtual
does not mean that a function can be overridden. This must be explicitly stated in the class specification. A pure virtual function, however, is an exception. Declare a pure virtual function like this:
class TAbstract { public: virtual void MustOverride() = 0; };