码迷,mamicode.com
首页 > 其他好文 > 详细

禁止对象之间的拷贝

时间:2017-08-31 00:59:27      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:析构函数   构造   cpp   member   构造函数   blog   之间   拷贝   声明   

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

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

 

禁止对象之间的拷贝

标签:析构函数   构造   cpp   member   构造函数   blog   之间   拷贝   声明   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!