An abstract class defines shared behavior for derived classes without allowing direct instances. It is a safer starting point than forcing related-looking classes into an incorrect inheritance relationship. section 7.9
A sound abstract base class should:
- Define behavior common to every derived class, with at least one pure virtual function. section 7.9
- Allow each derived class to enforce its own class invariant. section 7.9
- Support substitutability: every derived class must meaningfully implement the base interface. section 7.9





