
... C++ offers even more flexible control over the visibility of member
objects and member functions.  Specifically, members may be placed in the
public, private, or protected parts of a class.  Members declared in the
public parts are visible to all clients; members declared in the private
parts are fully encapsulated; and members declared in the protected parts
are visible only to the class itself and its subclasses.  C++ also supports
the notion of *_______friends*: cooperative classes that are permitted to see each
other's private parts.
		-- Grady Booch, "Object Oriented Design with Applications"
