首页 > 其他 > 详细

禁止对象之间的拷贝

时间:2017-08-31 00:38:21      阅读:324      评论:0      收藏:0      [点我收藏+]

如何禁止对象之间的拷贝?

将构造函数和析构函数中的任意一个设置为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‘

 

禁止对象之间的拷贝

原文:http://www.cnblogs.com/howo/p/7456129.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!