关于类的大小
1、理论上空类的sizeof应该等于0,但是实现上不可能,实际上空类的sizeof等于1;
class Base
{
};
//sizeof(Base)=1;
2、普通成员函数,静态成员函数,静态数据成员对类的大小没有影响;
class Base
{
public:
void c_fuc(int a)
{
std::cout << a << std::endl;
}
static void s_fuc(int a)
{
std::cout << a << std::endl;
}
static int _s;
};
int Base:: _s=0;
//sizeof(Base)=1;
3、若一个类中只有成员变量(和普通成员函数,静态成员函数,静态数据成员),则类大小的计算等于成员变量的尺寸之和加结构体的对齐的偏移之和;
class Base
{
char m_c1;
int m_i;
char m_c2;
};
//sizeof(Base)=12;
4、若类中有虚函数
class Base
{
public:
virtual void fuc(int a) {}
};
//sizeof(Base)=4;
5、若类虚继承某个空类
class Base
{
public:
// virtual void fuc(int a) {}
};
class Derive :public virtual Base
{
};
//sizeof(Base)=4;
4、5的类的大小的变化就是虚指针导致