字节对齐的规则
(1)第一个成员的首地址为0
(2)每个成员的首地址是自身大小的整数倍
(3)结构体的总大小,为其成员中所含最大类型的整数倍
#include<iostream>
using namespace std;
class Base
{
public:
int b = 10;
char str = 'A';
};
int main()
{
Base bb;
cout << sizeof(Base) << endl;
return 0;
}
输出为8字节,第一个int 占了4字节,第二个char占1字节,成员b要求按4字节对齐,所以编译器在成员str后面加了3个空字节。
#include<iostream>
using namespace std;
class Base
{
public:
virtual void Func1()
{
cout << "Func1()" << endl;
}
private:
int b = 10;
char str = 'A';
};
int main()
{
Base bb;
cout << sizeof(Base) << endl;
return 0;
}
输出为12字节,类中有了虚函数就会多一个虚函数表指针,这个指针占4个字节