1) The logical conclusion of this line of thought is a system represented to users as a hierarchy of abstract classes and implemented by a classical hierarchy. In other words:
Use abstract classes to support interface inheritance (§3.2.3, §20.1).
Use base classes with implementations of virtual functions to support implementation inheritance (§3.2.3, §20.1).