gpt4 book ai didi

c++ - 空类和派生虚拟类的大小

转载 作者:太空狗 更新时间:2023-10-29 19:58:45 27 4
gpt4 key购买 nike

1.为什么Derived4类的大小显示为8字节??

class Empty
{};
class Derived4 : virtual public Empty
{
char c;
};

2.Derived2类的大小显示为4字节??

class Empty
{};
class Derived2 : virtual public Empty
{};

最佳答案

请注意,sizeof(any_class) 是实现定义的。

但是您的情况实际发生了什么。好吧,它使用 virtual 继承,大多数实现使用隐藏指针来实现此功能,它花费 sizeof(pointer) 字节(指针存储在派生类本身中) , plus 所有成员的大小(如果有), plus padding if necessary, plus 基类的大小(由于空基优化,在基类为空的情况下可以减少为零)。

要获得更详细的答案,请在此站点上搜索“C++ 中的填充”。您会在上面找到很多主题。

关于c++ - 空类和派生虚拟类的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18164702/

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