• 2022-06-07
    引入虚基类就是为了解决什么问题?怎样定义虚基类?带有虚基类的派生类的构造函数有什么特点?
  • 多继承层次结构可能很复杂,派生类从同一基类中继承多次,这样一来就会出现基类的两个或两个以上的副本,编译器不知道应该访问哪个副本,造成二义性问题,因此就会发生错误。为了避免出现基类的两个副本,使用虚基类。 声明虚基类的格式:class 派生类名::virtual继承方式 基类名 虚基类及派生类构造函数的调用顺序① 虚基类的构造函数在所有非虚基类之前调用。② 若同一层次中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用。③ 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数。

    内容

    • 0

      下面描述中,正确的是( )。 A: 虚拟继承可以解决多重继承中的二义性问题 B: 类层次中的类从虚基类中直接继承虚基类的成员 C: 在有虚基类的类层次中,创建派生类对象时,会先调用基类的构造函数再调用虚基类的构造函数 D: 在有虚基类的类层次中,销毁派生类对象时析构函数的调用顺序与创建派生类对象时构造函数的调用顺序相反

    • 1

      下列有关类继承的表述中,错误的是 A: 派生类可以继承多个基类 B: 派生类构造函数要负责调用基类的构造函数 C: 虚基类可以解决由多继承产生的二义性问题 D: 虚基类可以解决由多继承产生的二义性问题

    • 2

      【单选题】关于虚函数重定义的说法中,错误的是()。 A. 基类与派生类中虚函数必须同名 B. 基类与派生类中虚函数必须参数相同 C. 基类与派生类中虚函数返回类型必须相同 D. 基类与派生类中虚函数返回类型可以不同

    • 3

      下列有关派生和继承的表述中,错误的是____。 A: 若派生类没有实现基类中的一个纯虚函数,则该派生类是抽象类 B: 在定义派生类时,可以用关键字virtual将某个基类指定为虚基类 C: 在生成派生类对象时,派生类构造函数要调用基类的构造函数 D: 派生类中定义的成员函数可以访问基类的所有成员

    • 4

      ______是一个在基类中说明的虚函数,它在基类中没有定义,但可以在派生类中定义。 A: 虚析构函数 B: 虚构造函数 C: 纯虚函数 D: 静态成员函数