C++多层继承时,派生类的成员变量空间分配的顺序是什么?

直接上代码吧

#include <bits/stdc++.h>
using namespace std;

#define show(x) cout<<setw(30)<<#x<<" : "<<x<<endl;

class Base0
{
  public:
    int var0;
    void fun0()
    {
      cout<<"MeMber of Base0: "<<var0<<endl;
    }
};

class Base1: virtual public Base0
{
  public:
    int var1;
};

class Base2: virtual public Base0
{
  public:
    int var2;
};

class Derived: public Base1, public Base2
{
  public:
    int var;
    void fun()
    {
      cout<<"MeMber of Derived: "<<var<<endl;
    }
};

int main()
{

    Derived d;
    Base0 *p = &d;
    show(&d);
    show(p); 
    show(&(d.Base1::var1));
    show(&(d.Base2::var2));
    show(&(d.var));
    show(&(d.Base1::Base0::var0));
    show(&(d.Base2::Base0::var0)); 

    return 0;
}

但是运行结果是:

                             &d : 0x73fdf0
                                p : 0x73fe10
        &(d.Base1::var1) : 0x73fdf8
        &(d.Base2::var2) : 0x73fe08
                     &(d.var) : 0x73fe0c

&(d.Base1::Base0::var0) : 0x73fe10
&(d.Base2::Base0::var0) : 0x73fe10

这个存储究竟是怎么安排的?

https://blog.csdn.net/m0_37786046/article/details/79584112