wrote:
> Dear mentors and gurus,
>
> I noticed at the end of section 22.4 of the 'FAQ-Lite' it says "Note
> that it is possible to provide a definition for a pure virtual
> function, but this usually confuses novices and is best avoided until
> later".
>
> I've read through all the later stuff, and (although I may have missed
> it) I can't find anything further on this. Can someone please explain
> why in all the Halls of Hades you would declare a member function to
> be pure virtual (i.e. _must_ be provided by any derived class) and
> then provide a definition for it in the Abstract Base Class?!
I can thing of only this scenario: Your base class A declares a pure virtual
method, and you have 3 classes X, Y, and Z derived from A. X and Y can implement
the virtual method in the same manner, Z needs a different implementation.
Instead of copying the code for X and Y, you can provide the common
implementation for the pure virtual method in A, so that X and Y can simply
forward the call to the base class version. Z has to provide its own version of
the pure virtual method (were the method not pure, the implementor of Z could
oversee to implement the method, which leads to unforeseen errors). By defining
a pure virtual method you provide a standard implementation, but derived classes
have to state explicitely that this standard implementation is OK.
Regards,
Stuart