Здесь, в этом коде, размер ob1 равен 16, что нормально (из-за виртуального указателя), но я не могу понять, почему размер ob2 равен 24.
#include <iostream>
using namespace std;
class A {
int x;
};
class B {
int y, z;
};
class C : virtual public A {
int a;
};
class D : virtual public B {
int b;
};
int main() {
C ob1;
D ob2;
cout << sizeof(ob1) << sizeof(ob2) << "\n";
}
Я ожидаю размер ob2 как 20, но на выходе 24
virtual
требует некоторых накладных расходов. Некоторые компиляторы помещают эти накладные расходы в структуру. - person Thomas Matthews   schedule 13.08.2019'\n'
, либоstd::endl
. - person Thomas Matthews   schedule 13.08.2019