为什么c++;取决于数据成员的公共/私有状态? 从我所知道的,C++中的一个类的大小取决于以下因素-< /p> 所有非静态数据成员的大小 数据成员的顺序 是否启用字节填充 其直接基类的大小 虚函数的存在性 继承模式(虚拟继承)
现在我已经创建了两个类,如下所示-为什么c++;取决于数据成员的公共/私有状态? 从我所知道的,C++中的一个类的大小取决于以下因素-< /p> 所有非静态数据成员的大小 数据成员的顺序 是否启用字节填充 其直接基类的大小 虚函数的存在性 继承模式(虚拟继承),c++,inheritance,memory,C++,Inheritance,Memory,现在我已经创建了两个类,如下所示- 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和B的大小,我明白了 A的尺寸:16 B尺寸:16 我的假设是B类中的字符c被容纳在A类中留下的“洞”中 但是,让我困惑的是下面的场景,我将成员公开 c
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和B的大小,我明白了
- 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
因此,在第一个例子中,<代码> A<代码>不是布局的POD,它的尾部填充可以用于