学习虚继承知识的时候,无意中发现了关于C++类所需内存的面试题,通过sizeof()计算类所需的内存字节数。当时自己就懵了,
因为学习C++的时候,就知道类在声明时是不会分配内存空间的还以为自己学习的东西出错,还来才知道sizeof()作用:sizeof是
C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。是提前预计类所需要的内存空间。
接下来进行类不同情况,sizeof()的分析
class kong{
};
cout << sizeof(kong)<<endl; //1 空类大小为1
原因:c++要求每个实例在内存中都有独一无二的地址。空类也会被实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化之后就有了独一无二的地址了。所以空类的sizeof为1。
class data2{
int a;
char s;
};

本文探讨了C++中类的内存占用情况,特别是虚继承和虚函数对内存大小的影响。通过sizeof()运算符,分析了不同情况下类的内存分配:空类通常会有一个额外字节,非空类中虚函数会引入一个4字节的虚函数指针。直接继承时,子类与父类共享虚函数指针;虚继承则子类会额外拥有一个指针。总结指出,多个虚函数仅需一个指针,并且子类的内存大小由自身成员和父类大小决定。
最低0.47元/天 解锁文章
921

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



