导引:多重继承和多继承
什么是多重继承:如图

什么是多继承:如图

继承中的特殊结构

菱形继承结构带来的问题,D会有两个A中的数据成员
class A
{
public:
int a;
};
class B:public A
{
public:
int b;
};
class C:public A
{
public:
int c;
};
class D:public B,public C
{
public:
int d;
};
D中会有两个a一个是从B继承的,一个是从C继承的
出现这样的问题,有两种解决方案
一是我们可以这样访问,避免二义性
D obj;
cout<<obj.B::a<<endl;
cout<<obj.C::a<<endl;
二是可以使用虚继承
虚继承
- 虚继承是在继承的使用用virtual将要继承的类声明为虚基类,使公共基类的成员在重复继承的派生类中只产生一个拷贝
- 虚基类不是在声明基类时声明,而是在派生类指定继承方式时声明。一个基类可以在生成一个派生类作为虚基类,而在生成另一个派生类时不作为虚基

本文探讨了C++中的多重继承和虚继承,解释了虚继承如何解决菱形继承结构中的二义性问题。通过虚基类表,虚继承确保了公共基类的成员在派生类中只有一个拷贝,减少了存储空间的占用。同时,介绍了包含虚基类的派生类构造函数的初始化过程。
最低0.47元/天 解锁文章
515





