gpt4 book ai didi

c++ - 基类中的私有(private)成员和公共(public)成员有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:40 25 4
gpt4 key购买 nike

#pragma pack(push, 4)
class Father
{
public:
int b;
char c;
};
class Child : public Father
{
char e;

};
#pragma pack(pop)

sizeof(父亲)=8 sizeof( child )=12
但是如果我们像这样改变父类:

class Father
{
private:// change from public
int b;
char c;
};

sizeof( child )=8

最佳答案

它是编译器的一个实现细节。换句话说,这不是你的事,除非你真的、真的需要让你的数据尽可能小。请注意此处的过早优化。

最后,它可能归结为 Common C++ ABI 的特性,使用诸如“用于布局目的的 POD”和“基类填充重用”之类的术语。

编辑:或者不编辑,因为这些编译指示表明您正在使用 Visual Studio。在这种情况下,永远不要忘记 MS ABI 是一片狂野的向后兼容性黑客丛林。

关于c++ - 基类中的私有(private)成员和公共(public)成员有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18846645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com