如果在虚基类中定义有带形参的构造函数,并且没有定义默认形式的构造函数,则整个继承结构中,所有直接或间接的派生类都必须在构造函数的成员初始化表中列出对虚基类构造函数的调用,以初始化在虚基类中定义的数据成员。
举一反三
- 带有基类的多层派生类构造函数的成员初始化列表中都要排出虚基类的构造函数,这样将对虚基类的子对象初始化:
- 下列有关派生和继承的表述中,错误的是____。 A: 若派生类没有实现基类中的一个纯虚函数,则该派生类是抽象类 B: 在定义派生类时,可以用关键字virtual将某个基类指定为虚基类 C: 在生成派生类对象时,派生类构造函数要调用基类的构造函数 D: 派生类中定义的成员函数可以访问基类的所有成员
- ______是一个在基类中说明的虚函数,它在基类中没有定义,但可以在派生类中定义。 A: 虚析构函数 B: 虚构造函数 C: 纯虚函数 D: 静态成员函数
- 下列关于有子对象派生类的构造函数调用顺序正确的是()。 ①调用基类构造函数,对基类数据成员初始化 ②调用子对象构造函数,对子对象数据成员初始化 ③执行派生类构造函数,对派生类数据成员初始化
- 必须在派生类的( )函数中调用初始化虚基类的构造函数。 A: 友元 B: 构造 C: 析构 D: 纯虚