派生类的构造函数只负责对派生类新增的成员进行初始化,对所有从基类继承下来的成员,其初始化工作还是由基类的构造函数完成。
派生类构造函数执行的一般次序如下:
(1)调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左到右)。
(2)对派生类新增的成员对象初始化,调用顺序按照它们在类中声明的顺序。
(3)执行派生类的构造函数体中的内容。
虚基类:
1、将共同基类设置为虚基类,这时从不同的路径继承过来的同名数据成员在内存中就只有一个副本,同一个函数名也只有一个映射。这样就解决了同名成员的唯一标识问题。
2、关键字只对紧随其后的基类起作用。
3、虚基类的成员在进一步的派生过程中和派生类一起维护同一个内存数据副本。
构造一个类的对象的一般顺序是:
(1)如果该类有直接或间接的虚基类,则先执行虚基类的构造函数。
(2)如果该类有其他基类,则按照它们在继承声明列表中出现的次序,分别执行它们的构造函数,但构造过程中,不再执行特它们的虚基类的构造函数。
(3)按照在类定义中出现的顺序,对派生类中新增的成员对象进行初始化。
(4)执行构造函数的函数体。