单选题下面的描述中,正确的是(  )。A virtual可以用来声明虚函数B 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C 即使基类的构造函数没有参数,派生类也必须建立构造函数D 静态数据成员可以通过成员初始化列表来初始化

题目
单选题
下面的描述中,正确的是(  )。
A

virtual可以用来声明虚函数

B

含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

C

即使基类的构造函数没有参数,派生类也必须建立构造函数

D

静态数据成员可以通过成员初始化列表来初始化


相似考题
参考答案和解析
正确答案: D
解析:
A项正确,virtual用来声明虚函数;B项错误,纯虚函数是在声明虚函数时被“初始化”为0的虚函数,含有纯虚函数的类在继承的时候,可以不加virtual关键字,因此可以不是虚基类;C项错误,派生类会自动调用基类的构造函数,它不是必须建立构造函数的;D项错误,静态数据成员函数只能在类外进行初始化。
更多“单选题下面的描述中,正确的是(  )。A virtual可以用来声明虚函数B 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C 即使基类的构造函数没有参数,派生类也必须建立构造函数D 静态数据成员可以通过成员初始化列表来初始化”相关问题
  • 第1题:

    下列关于虚基类的描述中错误的是

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

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

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

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


    正确答案:B
    解析:虚基类主要是为了消除在多重继承中的二义性问题。虚基类对象的初始化次数只于对象的多少有关,与类的层次结构是没有关系的。故本题正确答案为B。

  • 第2题:

    带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( )。

    A.与虚基类下面的派生类个数有关

    B.多次

    C.两次

    D.一次


    正确答案:D

  • 第3题:

    带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化

    A.与虚基类下面的派生类个数有关

    B.多次

    C.二次

    D.一次


    正确答案:D
    解析:本题考核虚基类以及构造函数。使用虚基类解决二义性问题的关键是在派生类中只产生一个虚基类对象。虚基类子对象由最派生类的构造函数通过调用虚基类的构造函数进行初始化(最派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,否则,表示使用该虚基类的缺省构造函数)。由于最派生类总是相对,因此,从虚基类直接或间接派生的派生类中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但只有用于建立对象的最派生类的构造函数才调用虚基类的构造函数,此时最派生类的所有基类中列出的对虚基类的构造函数的调用在执行过程中都被忽略,从而保证对虚基类子对象只初始化一次。

  • 第4题:

    下面的描述中,( )是正确的。

    A.virtual可以用来声明虚函数

    B.含有纯虚函数的类是不可以用宋创建对象的,因为它是虚基类

    C.即使基类的构造函数没有参数,派生类也必须建立构造函数

    D.静态数据成员可以通过成员初始化成员列表来初始化


    正确答案:A
    解析:本题考核C++中各知识点的应用。①virtual关键词既可以用来声明虚基类,也可以用来声明虚函数。所以选项A的描述是正确的。②C++规定,含有纯虚函数的类是抽象类,它不能用来定义对象。选项B的描述中,前半句是正确的,但后半句是错误的。③在C++中,如果所有的基类和子对象构造函数都不需要参数,派生也不需要参数初始化,则派生类中,可以不定义构造函数。所以选项C的描述是错误的。④在C++中,静态数据成员的初始化必须在类体外进行。所以选项D的描述是错误的。

  • 第5题:

    带有基类的多层派生类构造函数的成员初始化列表中都要排出虚基类的构造函数,这样将对虚基类的子对象初始( )。

    A.与虚基类下面的派生类个数有关

    B.多次

    C.二次

    D.一次


    正确答案:D

  • 第6题:

    下面的描述中,正确的是( )。

    A.virtual可以用来声明虚函数

    B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

    C.即使基类的构造函数没有参数,派生类也必须建立构造函数

    D.静态数据成员可以通过成员初始化列表来初始化


    正确答案:A

  • 第7题:

    下面关于虚函数的描述,错误的是

    A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
    B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
    C.虚函数可以是另一个类的友元函数,但不能是静态成员函数
    D.基类中说明的纯虚函数在其任何派生类中都必须实现

    答案:B
    解析:
    基类中说明的虚函数,在派生类中自然就是虚函数,对于纯虚函数必须在后面继承的派牛类中给出具体的实现;静态成员函数不能进行动态联编,所以虚函数不能是静态的。

  • 第8题:

    下列哪一种顺序是派生类构造函数正确的调用其它构造函数顺序。()

    • A、基类构造函数—>对象成员所在类的构造函数—>派生类自己的构造函数初始化自定义数据成员
    • B、基类构造函数—>派生类自己的构造函数初始化自定义数据成员—>对象成员所在类的构造函数
    • C、派生类自己的构造函数初始化自定义数据成员—>对象成员所在类的构造函数—>基类构造函数
    • D、对象成员所在类的构造函数—>派生类自己的构造函数初始化自定义数据成员—>基类构造函数

    正确答案:A

  • 第9题:

    带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。

    • A、与虚基类下面的派生类个数有关
    • B、多次
    • C、二次
    • D、一次

    正确答案:D

  • 第10题:

    单选题
    带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。
    A

    与虚基类下面的派生类个数有关

    B

    多次

    C

    二次

    D

    一次


    正确答案: C
    解析: 暂无解析

  • 第11题:

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

    使用虚基类可以消除由多继承产生的二义性

    B

    构造派生类对象时,虚基类的构造函数只被调用一次

    C

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

    D

    建立派生类对象时,首先调用虚基类的构造函数


    正确答案: D
    解析:
    虚基类可以消除由多重继承产生的二义性。虚基类的说明格式是:class<类名>: virtual<继承方式> <基类名>,其中关键字virtual与继承方式放置顺序无关,但必须位于基类名之前,且virtual只对紧随其后的基类名起作用。对于本题来说,声明“class B: virtual public A”说明类A为虚基类。

  • 第12题:

    单选题
    下面的描述中,正确的是(  )。
    A

    virtual可以用来声明虚函数

    B

    含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

    C

    即使基类的构造函数没有参数,派生类也必须建立构造函数

    D

    静态数据成员可以通过成员初始化列表来初始化


    正确答案: C
    解析:
    A项正确,virtual用来声明虚函数;B项错误,纯虚函数是在声明虚函数时被“初始化”为0的虚函数,含有纯虚函数的类在继承的时候,可以不加virtual关键字,因此可以不是虚基类;C项错误,派生类会自动调用基类的构造函数,它不是必须建立构造函数的;D项错误,静态数据成员函数只能在类外进行初始化。

  • 第13题:

    下列关于派生类的构造函数的说法中,哪个是错误的 ______。

    A.派生类不继承基类的构造函数和赋值运算

    B.派生类的构造函数可以调用基类的构造函数

    C.派生类的构造函数先于基类的构造函数执行

    D.在建立派生类的实例对象时,必须调用基类的构造函数来初始化派生类对象中的基类成员


    正确答案:C

  • 第14题:

    是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。

    A.虚析构函数

    B.构造函数

    C.纯虚函数

    D.静态成员函数


    正确答案:C

  • 第15题:

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

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

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

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

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


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

  • 第16题:

    带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化( )。

    A.一次

    B.两次

    C.多次

    D.以上答案都不对


    正确答案:D
    解析:只调用一次。

  • 第17题:

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

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

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

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

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


    正确答案:B

  • 第18题:

    派生类的构造函数的成员初始化列表中,不能包含( )。

    A)基类的构造函数

    B)派生类中子对象的初始化

    C)基类中子对象的初始化

    D)派生类中一般数据成员的初始化


    正确答案:C

  • 第19题:

    下面描述中,正确的是()。

    • A、virtual可以用来声明虚函数
    • B、含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
    • C、即使基类的构造函数没有参数,派生类也必须建立构造函数
    • D、静态数据成员可以通过成员初始化列表来初始化

    正确答案:A

  • 第20题:

    在创建派生类对象时,构造函数的执行顺序是()

    • A、对象成员构造函数―基类构造函数―派生类本身的构造函数
    • B、派生类本身的构造函数―基类构造函数―对象成员构造函数
    • C、基类构造函数―派生类本身的构造函数―对象成员构造函数
    • D、基类构造函数―对象成员构造函数―派生类本身的构造函数

    正确答案:D

  • 第21题:

    单选题
    在创建派生类对象时,构造函数的执行顺序是()
    A

    对象成员构造函数―基类构造函数―派生类本身的构造函数

    B

    派生类本身的构造函数―基类构造函数―对象成员构造函数

    C

    基类构造函数―派生类本身的构造函数―对象成员构造函数

    D

    基类构造函数―对象成员构造函数―派生类本身的构造函数


    正确答案: C
    解析: 暂无解析

  • 第22题:

    单选题
    派生类的构造函数的成员初始化列表中,不能包含(  )。
    A

    基类的构造函数

    B

    派生类中子对象的初始化

    C

    基类中子对象的初始化

    D

    派生类中一般数据成员的初始化


    正确答案: C
    解析:
    在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函。

  • 第23题:

    单选题
    下面描述中,正确的是()。
    A

    virtual可以用来声明虚函数

    B

    含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

    C

    即使基类的构造函数没有参数,派生类也必须建立构造函数

    D

    静态数据成员可以通过成员初始化列表来初始化


    正确答案: D
    解析: 暂无解析

  • 第24题:

    单选题
    下列哪一种顺序是派生类构造函数正确的调用其它构造函数顺序。()
    A

    基类构造函数—>对象成员所在类的构造函数—>派生类自己的构造函数初始化自定义数据成员

    B

    基类构造函数—>派生类自己的构造函数初始化自定义数据成员—>对象成员所在类的构造函数

    C

    派生类自己的构造函数初始化自定义数据成员—>对象成员所在类的构造函数—>基类构造函数

    D

    对象成员所在类的构造函数—>派生类自己的构造函数初始化自定义数据成员—>基类构造函数


    正确答案: C
    解析: 暂无解析