虚基类的派生与继承相关问题
当基类为虚基类时,在整个继承结构中,直接或间接继承虚基类的所有派生类都必须在构造函数的成员初始化表中给出对虚基类的构造函数的调用。如果未列出,则表示调用该虚基类的默认构造函数。但是在建立对象时,虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的,该派生类的其他基类对虚基类的构造函数的调用将被忽略。
1.构造函数的执行顺序:①调用基类的构造函数,顺序与被继承时声明的一致;②对成员对象进行初始化,按照它们在类内声明的顺序;③执行派生类构造函数体中的内容。
2.派生类隐含生成拷贝构造函数,但是如果要显示声明时,需要为基类相应的拷贝构造函数传递参数。
3.一般将基类的拷贝构造函数写成虚函数。