种的存储结构
类的存储结构
每次想探究下类的存储结构,总是不得而知,现在终于弄通了,现在解析如下
首先类本身是不占内存的,但是类本身是有大小的,只有类的实例才能占内存。类的元素分为两种:类的成员变量(存储在栈区),类的函数(存储在代码区)。但是涉及到继承和virtual就要重新考虑了。
1.有虚函数+实继承的情况:存储区位置分布:指向虚函数表(父类和本身的虚函数都在里面,而且父类在前)的指针+父类变量在前+子类本身变量在后面
2、有虚函数+实继承(一个重载的情况)的情况:存储区位置分布类似上面:指向虚函数表(父类和本身的虚函数都在里面,而且父类在前,重载的那个父类的函数位置被子函数名替代,具体不同比较右图)的指针+父类变量在前+子类本身变量在后
3、有虚函数+实继承(一个)的情况:存储区位置分布类似上面:指向本身虚函数表的指针+一个字节的0分隔符+子类成员变量在前+指向父类虚函数表的指针+父类成员变量在后
还有比如多继承的情况,及其它情况等等,见参考的网页:c++实例在内存中的分配、c++类对象内存结构(后面的比较经典)
- 1楼nj_dobetter昨天 18:13
- Mark!