[继承的虚拟类的C ++内存布局

问题描述 投票:0回答:1

关于派生类的大小,最好具有继承的“链”或继承最低派生类中的所有内容?

例如,以下哪个更好:

class Base {
  virtual void something() = 0;
};

class Derived1 {
  // ...
};

class Derived2 : public Derived1, public Base {
  // ...
};

class Base {
  virtual void something() = 0;
};

class Derived1 : public Base {
  // ...
};

class Derived2 : public Derived1 {
  // ...
};

在第二种情况下,是否必须存储两个vtable指针,而在第一种情况下只存储一个?

在第一种情况下,我的sizeof(Derived)比第二种情况低。

关于派生类的大小,最好具有继承的“链”或继承最低派生类中的所有内容?例如,在以下两者之间比较好:class Base {virtual ...

c++ inheritance abstract-class
1个回答
0
投票

据我所见,您看到的只是一个空的基类优化。看看我已经准备好了。当您没有空类时,大小是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.