基类的构造器总是在导出类的构造过程中被调用,而且按照继承层次逐渐向上链接,以使每个基类的构造器都能得到调用。这样做是有意义的,是因为构造器具有一项特殊任务:检查对象是否被正确的构造。导出类只能访问他自己的成员,不能访问基类中的成员(基类成员通常是private类型)。
只有基类的构造器才具有恰当的知识和权限来对自己的元素进行初始化。因此,必须令所有的构造器都能得到调用,否则就不可能正确构造完整对象。这正是编译器为什么要强调每个导出部分都必须调用构造器的原因。在导出类的构造器主体中,如果没有明确指定调用某个类的构造器,它就会默默的调用默认构造器。如果不存在默认构造器,编译器就会报错(若某个类没有构造器,系编译器会自动合成出一个默认的构造器)。