面试的时候经常会遇到问计算struct的字节数或者计算class的字节数。我们知道但结构体或者类还没有实例化的时候是不占用空间的,但是用sizeof(类名)的时候明明看到占用了空间,这是为什么呢?就算一个空类也占用一个字节的空间,因为sizeof计算的是类或者结构体实例的字节,实际上是不会被分配空间,但是为什么sizeof计算空类得到1呢,因为这是C++规定的,用char来标明这个类。在带有虚函数的类中,还要加上一个虚函数表,占用4个字节,加多4个字节。
真正得到的计算公式是:类的占用空间=类中所有非静态成员的占用空间