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