Item 6:若不想使用编译器自动生成的函数,就该明确拒绝【effective C++读书笔记】

版权声明:本文为博主原创文章,转载请注明出处并附带本文链接。 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{

         …                //类中不再声明拷贝构造函数和拷贝赋值操作符

};

猜你喜欢

转载自blog.csdn.net/IOT_Flower/article/details/78619436