Gee*_*her 3 c++ oop class sizeof
1.为什么Derived4类的大小显示8个字节?
class Empty
{};
class Derived4 : virtual public Empty
{
char c;
};
Run Code Online (Sandbox Code Playgroud)
2. Derived2类的大小显示4个字节?
class Empty
{};
class Derived2 : virtual public Empty
{};
Run Code Online (Sandbox Code Playgroud)
请注意,这sizeof(any_class)
是实现定义的.
但在你的情况下实际发生了什么.好吧,它使用的是virtual
继承,大多数实现使用隐藏指针来实现这个特性花费sizeof(pointer)
字节(指针存储在派生类本身),加上所有成员的大小(如果有的话), 如果需要加上填充,加上 sizeof base class(es)(在空基类的情况下,由于空基优化,可以减少到零).
有关更详细的答案,请在此站点上搜索"在C++中填充".你会发现很多主题.