nur*_*bha 10 c++ class object sizeof
这是打印不同类的大小的代码
#include <iostream>
using namespace std;
class EmptyClass
{
};
class AbstractClass
{
public:
virtual void funcOne() = 0;
virtual void funcTwo() = 0;
};
class NotAbstrClass
{
public: int virtFunc( int );
};
class MixClass
{
public:
virtual void clFunc( int );
static int i;
int j;
};
int main()
{
// Print size of class or class objects
cout<<"Size of empty class: "<< sizeof(EmptyClass)<<endl;
cout<<"Size of Abstract class :"<< sizeof(AbstractClass)<<endl;
cout<<"Size of Non Abstract class: "<< sizeof(NotAbstrClass)<<endl;
cout<<"Size of Mix class: "<< sizeof(MixClass)<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
C++ 11编译器上的程序输出是
Size of empty class: 1
Size of Abstract class :4
Size of Non Abstract class: 1
Size of Mix class: 8
Run Code Online (Sandbox Code Playgroud)
我理解为什么Empty类的大小为1 ,空类对象的大小.对于抽象类,该对象存储用于实现虚函数调用机制的指针.但是其他类对象(NotAbstrClass和MixClass)的大小呢?
NotAbstrClass
没有数据成员,因此它也是一个空类。由于类的大小不能为零,因此您将获得与 相同的待遇EmptyClass
。
MixClass
有一个虚函数和 1 个非静态数据成员。vptr
在您的平台上,这些 (和)似乎都int
占用 4 个字节,因此大小为 8 个字节。