当在多条继承路径上有一个公共的基类时,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例,此时可以用虚基类来解决这个问题。

题目

当在多条继承路径上有一个公共的基类时,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例,此时可以用虚基类来解决这个问题。


相似考题
更多“当在多条继承路径上有一个公共的基类时,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例,此时可以用虚基类来解决这个问题。”相关问题
  • 第1题:

    下列有关继承和派生的叙述中,正确的是

    A.派生类不能访问基类的保护成员

    B.作为虚基类的类不能被实例化

    C.派生类应当向基类的构造函数传递参数

    D.虚函数必须在派生类中重新实现


    正确答案:C
    解析:本题考查的知识点是:继承和派生。无论使用哪种继承方式,派生类中的成员都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,因此选项A) 不正确。在C++中,只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以选项B) 不正确。在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新定义,因此选项D) 不正确。故本题应该选择C。

  • 第2题:

    解决类继承中产生的二义性的方法不包括

    A.使用作用域运算符限定访问的成员函数

    B.在派生类中定义同名函数,且参数表必须和基类的保持一致

    C.在派生类中定义同名函数,且参数表可以和基类的不同

    D.采用虚基类解决多重继承中的共同基类产生的二义性


    正确答案:C
    解析:继承中的二义性主要表现在多重继承中具有多条继承路径时,派生类中行为的不确定性。如果强制指定了按照某条路径访问,亦即采用域作用符限定访问的成员函数的方法可以解决之,故选项A排除。在选项B和C中,唯一的区别在于参数表是否一致,我们知道:参数表不一致同名函数属于重载,是不存在二义性问题的,故选项C是正确答案。关于选项D,虚基类是C++中解决二义性的一种有效手段。

  • 第3题:

    一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是______ 。

    A.每个派生类的构造函数都要为虚基类构造函数提供实参

    B.多继承时有可能出现对基类成员访问的二义性问题

    C.使用虚基类可以解决二义性问题并实现运行时的多态性

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


    正确答案:C
    解析:虚基类不能解决二义性的问题。

  • 第4题:

    对于多重继承,下面说法中正确的是( )。

    A.一个派生类只有一个基类

    B.一个基类只能产生一个派生类

    C.一个派生类可有多个基类

    D.一个基类必须产生多个派生类


    正确答案:C
    解析:C++支持多重继承。

  • 第5题:

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

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

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

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

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


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

  • 第6题:

    一个类可以同时继承多个类,称为多继承。下列关于多个继承和虚基类的表述中,错误的是( )。

    A.每个派生类的构造函数都要为虚基类构造函数提供实参

    B.多继承时有可能出现对基类成员访问的二义性问题

    C.使用虚基类可以解决二义性问题并实现运行时的多态性

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


    正确答案:C

  • 第7题:

    Python是一门面向对象的语言,支持以下哪些继承方式:()

    • A、单继承:一个类继承自单个基类
    • B、多继承:一个类继承自多个基类
    • C、分层继承:多个类继承自单个基类
    • D、混合继承:两种或多种类型继承的混合

    正确答案:A,B,C,D

  • 第8题:

    虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题。


    正确答案:正确

  • 第9题:

    当不同的类具有相同的间接基类时,()

    • A、 各派生类无法按继承路线产生自己的基类版本
    • B、为了建立惟一的间接基类版本,应该声明间接基类为虚基类
    • C、为了建立惟一的间接基类版本,应该声明派生类虚继承基类
    • D、一旦声明虚继承,基类的性质就改变了,不能再定义新的派生类

    正确答案:C

  • 第10题:

    单选题
    下列有关类继承的叙述中,错误的是(  )。
    A

    继承可以实现软件复用

    B

    虚基类可以解决由多继承产生的二义性问题

    C

    派生类构造函数要负责调用基类的构造函数

    D

    派生类没有继承基类的私有成员


    正确答案: C
    解析:
    派生类继承了基类的全部数据成员(包括私有成员),只是基类的私有成员在派生类中是隐藏的,只能在基类内部访问。

  • 第11题:

    判断题
    虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题。
    A

    B


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

  • 第12题:

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

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

    B

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

    C

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

    D

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


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

  • 第13题:

    为解决在多重继承环境中因公共基类带来的 ______ 问题,C++语言提供了虚基类机制。


    正确答案:二义性
    二义性

  • 第14题:

    下列描述中错误的是( )。

    A.析构函数可以被继承

    B.虚函数不能被继承

    C.派生类可以有多个基类

    D.纯虚基类的子类可以是虚基类


    正确答案:B
    解析: 本题考查关于C++语言基类中虚函数的继承问题。C++语言中基类的虚函数是可以被派生类继承的。

  • 第15题:

    下列关于多继承二义性的描述中,错误的是( )。

    A.一个派生类的两个基类中都有某个同名成员,派生类中这个成员的访问可能出现二义性

    B.解决二义性的最常用的方法是对成员名的限定法

    C.基类和派生类中同时出现的同名函数,也存在二义性问题

    D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性


    正确答案:C

  • 第16题:

    1.  下列有关继承和派生的叙述中,正确的是(  )

    A)派生类不能访问通过私有继承的基类的保护成员

    B)多继承的虚基类不能够实例化

    C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数

    D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现


    B

  • 第17题:

    为解决在多重继承环境中因公共基类带来的二义性问题,C++语言提供了【 】机制。


    正确答案:虚基类
    虚基类

  • 第18题:

    下面关于继承和派生的叙述中,正确的是( )。

    A.作为虚基类的类不能被实例化

    B.派生类不能访问基类中的保护成员

    C.虚函数必须在派生类中重新实现

    D.派生类向基类的构造函数传递参数


    正确答案:A

  • 第19题:

    如果想要使公共基类在派生类中只产生一个基类子对象,则必须将这个基类设为()。


    正确答案:虚基类

  • 第20题:

    从一个基类派生的继承为单继承,从多个基类派生的继承为()。


    正确答案:多继承

  • 第21题:

    单选题
    下列关于类的继承描述中,正确的是()
    A

    派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数。

    B

    派生类也是基类,所以它们是等价的。

    C

    派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员。

    D

    一个基类可以有多个派生类,一个派生类可以有多个基类。


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

  • 第22题:

    填空题
    从一个基类派生的继承为单继承,从多个基类派生的继承为()。

    正确答案: 多继承
    解析: 暂无解析

  • 第23题:

    单选题
    当不同的类具有相同的间接基类时,()
    A

     各派生类无法按继承路线产生自己的基类版本

    B

    为了建立惟一的间接基类版本,应该声明间接基类为虚基类

    C

    为了建立惟一的间接基类版本,应该声明派生类虚继承基类

    D

    一旦声明虚继承,基类的性质就改变了,不能再定义新的派生类


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

  • 第24题:

    填空题
    如果想要使公共基类在派生类中只产生一个基类子对象,则必须将这个基类设为()。

    正确答案: 虚基类
    解析: 暂无解析