对于一个C++的空类:比如Empty:
1 class Empty
2 {
3 } ;
虽然Empty类定义中没有任何成员,但为了进行一些默认的操作,编译器会加入以下一些成员函数,这些成员函数使得类的对象拥有一些通用的功能:
(1)默认构造函数和复制构造函数。他们被用于类的对象的构造过程。
(2)析构函数。它被用于类的对象的析构过程。
(3)赋值函数。它被用于同类的对象间的赋值过程。
(4)取值运算。当对类的对象进行取地址(&)时,此函数被调用。
即虽然编程时没有定义类的任何成员,但是编译器也会插入一些函数,完整的Empty类定义如下:
class Empty
{
public:
Empty() ; //缺省构造函数
Empty(const Empty& ) ; //复制构造函数、
~Empty(); //析构函数
Empty& operator=(const Empty&) ; //赋值运算符
Empty* operator&() ; //取址运算符
const Empty* operator&() const ; //取址运算符const
};
C++的空类中,默认会产生构造函数,复制构造函数,析构函数,赋值函数以及取值运算。