l be able to
call <code>print_indented</code> which has been defined in terms of the
abstract <code>print</code> function. The point is that to implement the
interface you only need to provide the abstract methods and having done so you
can then use the non-abstract methods provided by the interface.</p>

<p>When you derive from an interface class, the rules of C++ require you to
provide non-abstract overloadings of all the abstract methods defined in the
interface. It is illegal in C++ to create an object 