в данном случае наследование нужно было только чтобы все упало на pure virtual call, без этого были бы другие забавные эффекты
Проблемы с смешной системой типов в C++ когда " в частности из объекта класса B он превратился в объект класса A" не было бы, если бы не было наследования всякого.