Як я знаю, розмір класу в c ++ залежить від наведених нижче факторів -
- Розмір усіх нестатичних членів даних.
- Порядок членів даних.
- Якщо включення байтів увімкнено чи ні
- Розмір його безпосереднього базового класу.
- Існування віртуальних функцій.
- Режим успадкування (віртуальне успадкування).
Тепер я створив 2 класи, як показано нижче -
class A{
int a;
short s;
int b;
char d;
};// kept a char at last on purpose to leave a "hole"
class B : public A{
char c;
};
тепер про перевірку розміру A та BI див
- розмір A: 16
- розмір B: 16
моє припущення, що графік класу В розміщений у "дірі", залишеній у класі А.
Але, що мене бентежить, це нижченаведений сценарій, в якому я роблю членів громадськості
class A{
public:
int a;
short d;
int b;
char s;
};
class B : public A{
public:
char c;
};
Тепер розмір стає
- розмір A: 16
- розмір B: 20
Я, здається, не розумію причини цієї різниці.