禁止对象之间的拷贝

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盘。

第五篇:明确拒绝不想编译器自动生成的拷贝构造函数和赋值运算符重载函数

如何在活动和片段之间传递对象

python深拷贝浅拷贝

在一些片段之间填充对象变量的最佳方法