When deriving a class from a base class, the base class may be inherited through public
, protected
or private
inheritance. We normally use public
inheritance in this book. Use of protected
inheritance is rare. Figure 11.16 summarizes for each type of inheritance the accessibility of base-class members in a derived class. The first column contains the base-class access specifiers.
When deriving a class with public
inheritance, public
members of the base class become public
members of the derived class, and protected
members of the base class become protected
members of the derived class. A base class’s private
members are never accessible directly from a derived class, but can be accessed through calls to the public
and protected
members of the base class.
When deriving a class with protected
inheritance, public
and protected
members of the base class become protected
members of the derived class. When deriving a class with private
inheritance, public
and protected
members of the base class become private
members (e.g., the functions become utility functions) of the derived class. Private
and protected
inheritance are not is-a relationships.