如果在虚基类中定义有带形参的构造函数,并且没有定义默认形式的构造函数,则整个继承结构中,所有直接或间接的派生类都必须在构造函数的成员初始化表中列出对虚基类构造函数的调用,以初始化在虚基类中定义的数据成员。
对
举一反三
- 带有基类的多层派生类构造函数的成员初始化列表中都要排出虚基类的构造函数,这样将对虚基类的子对象初始化:
- 下列有关派生和继承的表述中,错误的是____。 A: 若派生类没有实现基类中的一个纯虚函数,则该派生类是抽象类 B: 在定义派生类时,可以用关键字virtual将某个基类指定为虚基类 C: 在生成派生类对象时,派生类构造函数要调用基类的构造函数 D: 派生类中定义的成员函数可以访问基类的所有成员
- ______是一个在基类中说明的虚函数,它在基类中没有定义,但可以在派生类中定义。 A: 虚析构函数 B: 虚构造函数 C: 纯虚函数 D: 静态成员函数
- 下列关于有子对象派生类的构造函数调用顺序正确的是()。 ①调用基类构造函数,对基类数据成员初始化 ②调用子对象构造函数,对子对象数据成员初始化 ③执行派生类构造函数,对派生类数据成员初始化
- 必须在派生类的( )函数中调用初始化虚基类的构造函数。 A: 友元 B: 构造 C: 析构 D: 纯虚
内容
- 0
必须在派生类的()函数中调用初始化虚基类的构造函数。 A: 友元 B: 析构 C: 纯虚 D: 构造
- 1
一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本,此虚函数又称为 。 A: 虚析构函数 B: 虚构造函数 C: 纯虚函数 D: 静态成员函数
- 2
下面描述中,正确的是( )。 A: 虚拟继承可以解决多重继承中的二义性问题 B: 类层次中的类从虚基类中直接继承虚基类的成员 C: 在有虚基类的类层次中,创建派生类对象时,会先调用基类的构造函数再调用虚基类的构造函数 D: 在有虚基类的类层次中,销毁派生类对象时析构函数的调用顺序与创建派生类对象时构造函数的调用顺序相反
- 3
派生类的构造函数初始化列表中必须包含直接基类构造函数的调用。( )
- 4
下列关于友元的描述中,错误的是( )。 A: 在建立虚基类的派生对象时,只有最远派生类的构造函数调用虚基类的构造函数。 B: 在建立虚基类的派生对象时,虚基类构造函数的调用次数与虚基类下面的派生类个数有关。 C: 设置虚基类的目的是消除二义性 。 D: 虚基类可以实例化一个或多个对象。