更多“使用虚函数无法避免多重继承产生的二义性。() ”相关问题
  • 第1题:

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

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

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

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

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


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

  • 第2题:

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

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

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

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

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


    正确答案:C

  • 第3题:

    下面关于多重继承的叙述,正确的是()。

    A.C++不支持多重继承

    B.多重继承是指从多层基类中派生出的子类

    C.多重继承中派生类成员的访问控制规则与单一继承规则不相同

    D.多重继承中可以通过虚基类防止二义性问题


    多重继承中可以通过虚基类防止二义性问题。

  • 第4题:

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

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

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

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

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


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

  • 第5题:

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

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

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

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

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


    正确答案:C
    解析:使用虚基类的目的就是为了解决多继承路径下对基类成员的访问的二义性问题。一旦继承虚基类,那么在构造派生类对象时,虚基类构造函数就只调用一次。派生类对象调用构造函数和普通类对象一样,都是先调用基类构造函数,然后调用派生类构造函数。