继承的数据如何在派生类中放置(排列)?

How are inherited data placed (arranged) in a derived class?

本文关键字:排列 数据 派生 继承      更新时间:2023-10-16

我将多个变量从超类继承到基类,我希望该类将所有变量按降序打包(最大的类型在顶部,较小的类型在底部(,但由于我继承了大量数据,我不知道如何排列它们,以便最终继承的类将被紧密打包。

继承的数据是否打包到基类,或者它是随机放置的,或者在打包到最终基类之前是否对齐?

我还想知道继承是否会影响对象的"缓存友好性"。

谢谢!

继承的数据是否打包到基类中,或者它是随机放置的,还是在打包到最终基类之前对齐的?

内存中子对象的顺序不是随机的。首先声明的成员先于稍后声明的具有相同访问权限的成员。未指定不同访问说明符之间的顺序。基数在成员之前,按声明顺序排列。

不知道如何排列它们,以便最终继承的类将被紧密打包。

这本质上是包装问题的一种变体。您可以使用回溯算法找到解决方案。尽管这个问题在计算上很困难,但你应该希望不要有太多的对象来使复杂性失控。