多重继承二义性问题

本文讨论了C++中多重继承引发的二义性问题,包括继承性和非继承性二义性。通过示例代码解释了问题的产生原因,并提出了使用虚拟继承和指定父类名称来解决这两种二义性问题的方法。
摘要由CSDN通过智能技术生成

 

1、继承性二义性问题

多个子类同时继承与同一个基类后,其派生类在访问基类成员时,会出现二义性问题,因为派生类无法选择继承路径。解决办法,通过使用虚拟继承可以解决这类二义性问题。

 

2、非继承性二义性问题

子类继承多个父类,并且这个多个父类具有相同命名的成员(只要名称相同,不区分函数参数或者成员类型);当子类调用父类相同命名成员时,会出现二义性问题,因为派生类不能区分调用哪个父类的成员。解决办法,通过使用指定父类名称可以解决这类二义性问题。

 

此二类二义性问题代码示例

继承性二义性代码示范:

#include <iostream>

using namespace std;

/**//*

    继承关系说明:A是B和C的基类,B和C是D的基类

*/

class A

{

public:

    int a;

};

class B:public A

{

public:

    int b;

};

class C:public A

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值