空类的概念
在C++中,空类是指没有任何成员变量和成员函数的类。空类在C++中也被称为空结构体(empty struct)或标记类(tag class),其主要作用是作为其他类的基类或者占位符。
空类通常是这样定义的:
class EmptyClass {};
空类的大小
空类在C++中占用1个字节的空间,这是因为每个对象都必须具有唯一的地址,而空类在内存中也需要占据一个地址。通常情况下,C++编译器会给空类添加一个字节的空间,以确保每个空类对象都有一个唯一的地址。
空类有哪些函数?
空类在C++中不会自动生成任何成员函数,因为它没有任何成员变量或成员函数需要被访问或操作。但是,编译器会自动生成一些默认的函数,包括默认构造函数、拷贝构造函数、拷贝赋值运算符和析构函数。这些函数的生成规则遵循C++的规范,但是它们在空类中是空函数,即它们没有任何实现。
class Empty //定义时会生成6个成员函数
{
public:
Empty(); //缺省构造函数
Empty(const Empty &rhs); //拷贝构造函数
~Empty(); //析构函数
Empty& operator=(const Empty &rhs); //赋值运算符
Empty* operator&(); //取址运算符
const Empty* operator&() const; //取址运算符(const版本)
};