在c++对象模型,非静态数据成员是影响占据内存大小的主要因素,所有实例共享一份静态数据,静态/非静态成员函数都不会影响实例内存的大小(是由实现固定的),若包含虚函数会占4字节无论有多少虚函。
所以,类实例的内存布局中只包含“成员数据”,并且只有用“虚函数”时(vptr)才会对内存布局有一丁点影响。
派生类在实例化时首先构造一个父类实例,在派生类销毁之后销毁。
子类b
{
父类a 部分
{
vptr
{
虚函数 // 此时虚表中的虚函数指向的是子类中的实现
子类虚函数的实现
<父类的函数并不包含在子类实例中>
}
父类数据成员
}
子类数据成员
}
C++类内存分配
最新推荐文章于 2025-10-18 10:18:20 发布
1576

被折叠的 条评论
为什么被折叠?



