微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

upcasting后多重继承的内存布局

如何解决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 举报,一经查实,本站将立刻删除。