C++中空类默认会产生以下6个函数:默认构造函数、拷贝构造函数、析构函数、赋值运算符重载函数、取址运算法重载函数、const取址运算符重载函数等。
class Empty
{
public:
Empty(); // 缺省构造函数,即默认构造函数
Empty( const Empty& ); // 拷贝构造函数
~Empty(); // 析构函数
Empty& operator=( const Empty& ); // 赋值运算符
Empty* operator&(); // 取址运算符
const Empty* operator&() const; // 取址运算符 const
};
// const对象默认调用const成员函数,非const对象默认调用非const成员函数;
// 详见https://blog.csdn.net/u014630623/article/details/51290954
但是,C++默认生成的函数,只有在被需要的时候,才会产生。即当我们定义一个类,而不创建类的对象时,就不会创建类的构造函数、析构函数等。
说明:
- 这些函数只有在需要调用的时候,编译器才会生成。
- 函数都是public的函数,都是inline的(即函数定义在类的定义中的函数)。
- 如果你显式的声明了这些函数中的任何一个函数,那么编译器将不再生成默认的函数。