第11章_讲课资料.ppt

2. 虚基类的初始化 如果在虚基类中定义了带参数的构造函数,而且没有定义默认构造函数,则在其所有派生类(包括直接派生或间接派生的派生类)中,通过构造函数的初始化表对虚基类进行初始化。例如 class A//定义基类A {A(int i){ } //基类构造函数,有一个参数 …}; class B :virtual public A //A作为B的虚基类 {B(int n):A(n){ } //B类构造函数,在初始化表中对虚基类初始化 …}; class C :virtual public A //A作为C的虚基类 {C(int n):A(n){ } //C类构造函数,在初始化表中对虚基类初始化 …}; class D :public B,public C //类D的构造函数,在初始化表中对所有基类初始化 {D(int n):A(n),B(n),C(n){ } …}; 注意: 在定义类D的构造函数时,与以往使用的方法有所不同。规定: 在最后的派生类中不仅要负责对其直接基类进行初始化,还要负责对虚基类初始化。 C++编译系统只执行最后的派生类对虚基类的构造函数的调用,而忽略虚基类的其他派生类(如类B和类C) 对

文档评论(0)

1亿VIP精品文档

相关文档