空类、虚继承

空类

空类(empty class)是指没有数据成员和成员函数的类。

空类对象的大小为 1 字节,因为编译器会为空类对象分配一个字节的空间,以防止出现意外的内存访问。这样当用户创建两个空类的对象时,就可以保证这两个对象所在的地址不同。

1
2
3
4
5
6
7
8
9
10
#include <iostream>

using namespace std;

X {};

int main() {
cout << sizeof(X) << endl;
return 0;
}

输出:

1
1