下列关于虚基类的说法错误的是()。A、有引入虚基类的目的是解决二义性的问题;B、因为虚基类可被多个派生类继承,因此可以有多个副本以适应不同的派生类;C、若某个类被说明为虚基类,则被重复继承的该类成员在派生类对象中只有一个副本;D、在派生类对象创建时,要保证虚基类的构造函数只被调用一次。

题目
下列关于虚基类的说法错误的是()。

A、有引入虚基类的目的是解决二义性的问题;

B、因为虚基类可被多个派生类继承,因此可以有多个副本以适应不同的派生类;

C、若某个类被说明为虚基类,则被重复继承的该类成员在派生类对象中只有一个副本;

D、在派生类对象创建时,要保证虚基类的构造函数只被调用一次。


相似考题
更多“下列关于虚基类的说法错误的是()。 ”相关问题
  • 第1题:

    下列关于虚基类的描述,错误的是( )。

    A.设置虚基类的目的是为了消除二义性

    B.虚基类的构造函数在非虚基类之后调用

    C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用

    D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数


    正确答案:B
    虚基类的引入就是为j-消除。二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行。

  • 第2题:

    下列关于虚基类的描述,错误的是( )。

    A.设置虚基类的目的是为了消除二义性

    B.虚基类的构造函数在非虚基类之后调用

    C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用

    D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数


    正确答案:B
    B。【解析】虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行。

  • 第3题:

    1、下列关于虚基类的描述,错误的是()

    A.设置虚基类的目的是为了消除二义性

    B.虚基类的构造函数在非虚基类之后调用

    C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用

    D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数


    声明“class B : virtual public A”说明类B为虚基类

  • 第4题:

    下列关于虚基类的描述中,错误的是( )。

    A.虚基类子对象的初始化由派生类完成

    B.虚基类子对象的初始化次数与虚基类下面的派生类的个数有关

    C.设置虚基类的目的是消除二义性

    D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数的调用


    正确答案:B
    解析:本题考核虚基类的初始化。从虚基类直接或间接派生的派生类的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用,但只有用于建立对象的派生类的构造函数调用虚基类的构造函数,而该派生类的所有基类中列出的对虚基类的构造函数的调用在执行中被忽略,从而保证了对虚基类子对象只初始化一次。

  • 第5题:

    下列关于虚基类的描述中,错误的是( )。

    A.虚基类子对象的初始化由最派生类完成

    B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关

    C.设置虚基类的目的是消除二义性

    D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数的调用


    正确答案:B