一个类可以同时继承多个类,称为多继承。下列关于多个继承和虚基类的表述中,错误的是 A.每个派生类的构造函数都要为虚基类构造函数提供实参 B.多继承时有可能出现对基类成员访问的二义性问题 C.使用虚基类可以解决二义性问题并实现运行时的多态性 D.建立最派生类对象时,虚基类的构造函数会首先被调用
正确答案:C解析:本题考核虚基类。C++中,通过虚拟基类所派生的类,在所产生的对象中,只包含了一个和其他类共享的基础对象,也就是说,从同一个基类中以虚拟方式派生的所有类,在它们所产生的对象里,不会有一份基础对象,而只是在内存里保留一份基础对象,而派生类中只保留指向此基础对象的指针,这样就不会同时有两份基类对象的情形发生。用虚基类可以解决二义性问题。但是实现运行时的多态性是虚函数。
举一反三
- 一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是( )。 A: 建立最远派生类对象时,虚基类的构造函数会首先被调用 B: 每个派生类的构造函数都要为虚基类构造函数提供实参 C: 多继承时有可能出现对基类成员访问的二义性问题 D: 使用虚基类可以解决二义性问题并实现运行时的多态性
- 下列有关类继承的表述中,错误的是 A: 派生类可以继承多个基类 B: 派生类构造函数要负责调用基类的构造函数 C: 虚基类可以解决由多继承产生的二义性问题 D: 虚基类可以解决由多继承产生的二义性问题
- 下列有关类继承的表述中,错误的是 A: 继承可以实现软件复用 B: 派生类构造函数要负责调用基类的构造函数 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
多继承派生类构造函数构造对象时,()被最先调用。 A: 派生类自己的构造函数 B: 虚基类的构造函数 C: 非虚基类的构造函数 D: 派生类中子对象类的构造函数
- 4
下列有关派生和继承的表述中,错误的是____。 A: 若派生类没有实现基类中的一个纯虚函数,则该派生类是抽象类 B: 在定义派生类时,可以用关键字virtual将某个基类指定为虚基类 C: 在生成派生类对象时,派生类构造函数要调用基类的构造函数 D: 派生类中定义的成员函数可以访问基类的所有成员