先看第一种简单的情形,所有类中没有任何虚函数的菱形继承。
下面是c++源码:
class Top {//虚基类
public:
int i;
Top(int ii) {
i = ii;
}
};
class Left : public virtual Top {
public:
int j;
Left(int jj, int ii) : Top(ii) {
j = jj;
}
菱形继承在C++继承中是一种复杂的继承关系,存在着二义性和数据冗余的问题,而菱形虚拟继承则是为了解决菱形继承所存在的问题。为了探讨菱形虚拟继承如何解决该问题,我先建立个一个较为简单的菱形继承模型。下面分别是菱形继承和菱形虚拟继承的代码实现:
//菱形继承
#include
#include
using namespace std;
class AA
{
public:
int _aa;
};
class BB : public AA
{
public:
int _bb