5.9. Nested Classes

Class definitions may nest (appear inside other class definitions). Here's the format.

class Outer {                  // enclosing class 
   . . .
   class Inner {               // enclosed class (nested)
   . . .
   };
   . . .
};

Enclosed classes are local to their enclosing class and may nest arbitrarily deep. Member functions of enclosed classes have no special access to enclosing class members and obey the same access rules (public and private) as non-nested classes. Static members, typedefs, and enumerators of enclosing classes are available to nested classes.

Nested classes improve encapsulation by hiding the visibility of enclosed classes. To demonstrate, let's modify the List design from the previous section and make the Node class nest within List.

 class List ...

Get Navigating C++ and Object-Oriented Design now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.