对于c++中的的一个空类,例如:
class EMPTY
{
};
虽然类中没有定义任何的数据成员以及成员函数,但是为了进行一些默认的操作,编译器会加入以下一些成员函数,这样使得类的对象有一些通用的功能。
- 默认构造函数和复制构造函数,它们被用来创建类的对象
- 析构函数
- 赋值函数,用于类的对象的赋值过程
- 取值函数,当类的对象进行取地址时,此函数被调用
所以一个完整的EMPTY类如下:
class EMPTY
{
public:
EMPTY(); //默认构造函数
EMPTY(const EMPTY&); //赋值构造函数
~EMPTY(); //析构函数
EMPTY& operator=(const EMPTY&); //赋值函数
EMPTY* operator&(); //取址函数
};
对于复制构造函数,下面三种情况需要调用复制构造函数:
- 一个对象以值传递的方式传入函数体;
- 一个对象以值传递的方式从函数体返回;
- 以一个对象初始化另一个对象。