在C++中定义一个类,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译期会为我们自动生成这两个函数。但是我们有时又希望禁止拷贝类的实例,这时可以私有化拷贝构造函数和拷贝赋值操作符即可。
class do_not_copy { private: do_not_copy (const do_not_copy &); void operator=(const do_not_copy &); };
Boost库已经提供了一个简单的方案,将设计的类继承自boost::noncopyable即可实现该类不可拷贝。noncopyable源码如下:
class noncopyable { protected: noncopyable() {} ~noncopyable() {} private: noncopyable(const noncopyable &);// 私有化拷贝构造函数和拷贝赋值操作符 const noncopyable& operator=(const noncopyable&); };