This question was asked here a few hours ago and made me realise that
I have never actually used covariant return types in my own code. For those
not sure what covariance is
Another example is a concrete factory which would returns pointers to the concrete classes instead of the abstract one (I've used it for internal use in the factory when the factory had to construct compound objects).