upcasting后多重继承的内存布局

问题描述

我正在学习我的 C++ 讲座,教授给出了一张幻灯片,上面有这个代码示例。他说因为 b1 是第一个父类(所以我认为第一个实现了?),它与子类(Mi)具有相同的内存地址。 然后,我仍然困惑为什么 b2 不等于 &mi,即使您在 Base1* b1 = &mi 中这样指定。

我认为它在内存中看起来像这样(见图),但我认为,当看到 b2 == &mi 为假的事实时,这是不正确的。我应该如何更改图片以使其正确表示内存布局?

enter image description here

Mi mi;                  //MI inherits both from Base1 and Base2

Base1* b1 = &mi;        // Upcast

Base2* b2 = &mi;        // Upcast

//Suppose b1 is first parent

//Now we test:

b1 == &mi;     //true

b2 == &mi;     //false

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)