A good example of an inner class is the iterator implementation for a given collection type. Its a class that implements a public interface, but has no business existing except in association with another class. It allows you to model things that in C++ you would be forced to do with the friend operator.