版权声明:本文为博主原创文章,转载请注明出处并附带本文链接。 https://blog.csdn.net/IOT_Flower/article/details/78619436
一般来说,如果不希望类实现某个功能,只要不定义相关的功能函数即可,但在Item 5 中我们知道:一旦尝试调用拷贝构造函数或拷贝赋值运算符,编译器就会自动生成默认。
如果想要阻止对象拷贝操作,我们可以自定义一个uncopyable类,将拷贝构造函数和拷贝操作符声明为私有,不给出实现,再继承它:
class Uncoptable{
protected: //允许派生对象构造和析构
Uncopyable(){}
~Uncopyable(){}
private: //但阻止拷贝
Uncopyable(constUncopyable&);
Uncopyable &oprator=(const Uncopyable&);
};
//那么用一个类去继承Uncopyable
class A:private Uncopyable{
… //类中不再声明拷贝构造函数和拷贝赋值操作符
};