Exceptions
Do use public inheritance to model substitutability. (See Item 37.)Even if you don't need to provide a substitutability relationship to all callers, you do need nonpublic inheritance if you need any of the following, in rough order from most common (the first two points) to exceedingly rare (the rest):Item 8)