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

题目
问答题
在多继承中,什么情况下会出现二义性?怎样消除二义性?
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

使用虚函数可以避免多重继承产生的二义性。()


参考答案:正确

第2题:

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

A.一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性

B.解决二义性可以用对成员名的限定法

C.父类和子类中同时出现同名函数,也可能存在二义性

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


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

第3题:

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


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

第4题:

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


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

第5题:

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

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

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

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

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


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

第6题:

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

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

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

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

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


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

第7题:

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

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

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

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

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


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

第8题:

使用虚函数无法避免多重继承产生的二义性。()


参考答案:错误

第9题:

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

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

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

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

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


正确答案:C

第10题:

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


正确答案:

更多相关问题