自动生成
默认构造函数
copy构造函数
赋值操作
析构函数
如何避免
#define DISABLE_COPY_AND_ASSIGN(Name) \
Name(const Name&); \
Name& operator=(const Name&)
class Test {
public:
Test(int t);
~Test();
private:
DISABLE_COPY_AND_ASSIGN(Test);
};
1.声明了拷贝构造函数和赋值函数,阻止了编译器暗自创建的专属版本.
2.声明了private,阻止了外部对它们的调用.
3.不定义它们,可以保证成员函数和友元函数调用它们时,产生一个连接错误,将连接期错误移至编译期