【C++】虚继承——菱形继承问题(内存布局图解)
(这一块的内容给出七个例子来理解~有问题的话可以评论留言哟)
先给出一段含有虚继承的代码:
#include<iostream>
using namespace std;
class A
{
public:
A(int a):ma(a){}
public:
int ma;
};
class B:virtual public A
{
public:
B(int b):A(a),mb(b){}
public:
int mb;
};
class C:virtual public A
{
public:
C(int c):A(c),mc(c){}
public:
int mc;
};
class D:public B , public C
{
public:
D(int d):A(d),B(d),C(d),md(d){}
public:
int md;
};
其中B、C虚继承A,则会产生vbptr以及vbtable,用图形表示如下: