nPreviously, we recommended that data members be specified in the private section.
nBy following this guideline when designing hierarchies, all derived classes would explicitly need to use the
base class' public member
functions to access inherited data.
nThis isn't practical when building classes that are intended to work in harmony with one another. And, it reduces our ability to extend the functionality of a given class in the future.
nBy declaring members as protected, derived
classes have access to base
class members while restricting access
by client applications.