DieselHardTop is both a Diesel and a Car, but if you define new virtual functions at the Diesel level, they can't be called via the Car interface (without downcasting).
i.e., you can't do this:
But of course, you can do this:Code:Car * car = new DieselHardTop; car->DieselOnlyMemberFunction();
Code:Diesel * car = new DieselHardTop; car->DieselOnlyMemberFunction();