禁止对象之间的拷贝
Posted guhowo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁止对象之间的拷贝相关的知识,希望对你有一定的参考价值。
如何禁止对象之间的拷贝?
将构造函数和析构函数中的任意一个设置为private,如下:
class A{ public: A(){}; private: ~A(){}; A(const A&a){}; A &operator=(const A&a){return a;} };
A a;
编译报错提示:Variable of type ‘A‘ has private destructor.
我们知道,如果我们不显性的声明拷贝构造函数和重载=,那么编译器会为我们提供默认的拷贝构造函数和copy assignment函数。这样一来,对象间的拷贝就会发生,如果要禁止对象间的拷贝,那么就要显性的声明,无需定义。
class A{ public: A(){}; ~A(){}; A(const A&a){}; private: A &operator=(const A&a){return a;} }; A c,d; c=d;
编译报错:‘operator=‘ is a private member of ‘A‘
以上是关于禁止对象之间的拷贝的主要内容,如果未能解决你的问题,请参考以下文章
防止代码拷贝,在Linux系统的PC,禁止数据拷贝方案,要求插U盘时能读取,但是不能拷贝东西到U盘。