更多“在多继承中,什么情况下会出现二义性?怎样消除二义性?”相关问题
  • 第1题:

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

    A.派生类可以使用private派生

    B.对基类成员访问必须是无二义性的

    C.赋值兼容规则也适合于多继承

    D.基类和派生类中存在同名函数,将出现二义性


    正确答案:D
    解析:基类和派生类存在同名函数,符合支配规则,不存在二义性。

  • 第2题:

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

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

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

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

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


    正确答案:C

  • 第3题:

    多继承情况下,派生类对基类成员的访问会出现二义性。解决二义性的方法是【 】、【 】和【 】。


    正确答案:

  • 第4题:

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


    正确答案:虚基类
    虚基类

  • 第5题:

    有如下程序: class Base1 { public: int a; void b() { return}; void c(float) { a=float;} }; class Base2 { public: void b(){} void c(){} private: int a; }; class Derived:public Basel,public Base2 { public: void b(){} }; void main() { Derived obj; obj.a=1; //① obj.b(); //② obj.c(10); //③ } 下面各项对语句①②③的描述中,正确的是( )。

    A.语句①②③都有二义性

    B.语句①③有二义性,②没有二义性

    C.语句①有二义性,②③没有二义性

    D.语句①②有二义性,③没有二义性


    正确答案:B
    解析:C++中二义性问题的检查在访问控制权限或类型检查之前进行,即访问权限的不同或类型不同不能解决二义性问题。所以语句①③有二义性。由于Derived中又重新定义了同名成员函数b(),所以b()函数的调用就不存在二义性问题。

  • 第6题:

    多重继承的二义性可以避免吗?


    正确答案:可以避免,通常使用类名限定。

  • 第7题:

    句子的二义性(这里的二义性是指语法结构上的)


    正确答案: 文法G[S]的一个句子如果能找到两种不同的最左推导(或最右推导),或者存在两棵不同的语法树,则称这个句子是二义性的。

  • 第8题:

    单继承情况下,派生类中对基类成员的访问也会出现二义性。


    正确答案:错误

  • 第9题:

    解决多继承情况下出现的二义性的方法之一是使用成员名限定法。


    正确答案:正确

  • 第10题:

    判断题
    单继承情况下,派生类中对基类成员的访问也会出现二义性。
    A

    B


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

  • 第11题:

    判断题
    解决多继承情况下出现的二义性的方法之一是使用成员名限定法。
    A

    B


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

  • 第12题:

    单选题
    LR(1)文法都是()。
    A

    无二义性且无左递归

    B

    可能有二义性但无左递归

    C

    无二义性但可能是左递归

    D

    可以既有二义性又有左递归


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

  • 第13题:

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

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

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

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

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


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

  • 第14题:

    在多继承的基类和派生类中同时出现______存在二义性。


    正确答案:同名函数
    同名函数 解析: 如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,这样存在的同名函数法判断调用的确定性。即存在二义性。

  • 第15题:

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

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

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

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

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


    正确答案:C

  • 第16题:

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

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

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

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

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


    正确答案:C

  • 第17题:

    关于二义性的描述错误的是

    A.一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性
    B.解决二义性可以用对成员名的限定法
    C.父类和子类中同时出现同名函数,也可能存在二义性
    D.一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,对该父类成员进行访问时,可能出现二义性

    答案:C
    解析:
    基类和其继承类同时出现同名函数,则在继承类中实现对象中调用该函数是使用继承类中的定义,这种情况下是不会产生二义性的。

  • 第18题:

    LR(1)文法都是()。

    • A、无二义性且无左递归
    • B、可能有二义性但无左递归
    • C、无二义性但可能是左递归
    • D、可以既有二义性又有左递归

    正确答案:C

  • 第19题:

    文法的二义性和语言的二义性是两个不同的概念。


    正确答案:正确

  • 第20题:

    下列关于多继承的描述,错误的是()

    • A、一个派生类对象可以拥有多个直接或间接基类的成员
    • B、在多继承时不同的基类可以有同名成员
    • C、对于不同基类的同名成员,派生类对象访问它们时不会出现二义性
    • D、对于不同基类的不同名成员,派生类对象访问它们时不会出现二义性

    正确答案:C

  • 第21题:

    设置虚函数的声明中,正确的是()。

    • A、简化程序
    • B、消除二义性
    • C、提高运行效率
    • D、减少目标代码

    正确答案:B

  • 第22题:

    单选题
    下列关于多继承的描述,错误的是()
    A

    一个派生类对象可以拥有多个直接或间接基类的成员

    B

    在多继承时不同的基类可以有同名成员

    C

    对于不同基类的同名成员,派生类对象访问它们时不会出现二义性

    D

    对于不同基类的不同名成员,派生类对象访问它们时不会出现二义性


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

  • 第23题:

    问答题
    在多继承中,什么情况下会出现二义性?怎样消除二义性?

    正确答案: 在多继承中会出现两个问题:名冲突和重复继承。在多继承中,当多个基类中包含同名的成员时,它们在派生类中就会出现名冲突问题;在多继承中,如果直接基类有公共的基类,就会出现重复继承,这样,公共基类中的数据成员在多继承的派生类中就有多个拷贝。在C++中,解决名冲突的方法是用基类名受限;解决重复继承问题的手段是采用虚基类。
    解析: 暂无解析