The compiler has to generate code for the constructor. Part of it is the construction of the base class and member variables. The initializer list shows what parameters to pass to those constructors, (and thus which constructor to call for each object).