C++实现不可被复制的类

C++语言编程中,类的拷贝主要是通过拷贝构造函数和赋值函数来进行,再者就是为拷贝专门实现的成员方法。
由于拷贝构造函数和赋值函数在用户为提供的情况下是由C++编译器自动生成的,而且是public成员,因此默认的C++类都有拷贝功能。


一个默认的C++类所拥有的成员函数:

class Empty{}; //空类Empty

Empty();             //默认构造函数
Empty(const Empty &);//默认拷贝构造
~Empty();           //默认析构函数
Empty & operator=(const Empty &)//默认赋值运算符
Empty *operator&();//取地址运算符
const Empty *operator &() const; //取地址运算符const

程序员有时候需要给文件加上权限,让这些机密文件不能被随意拷贝,这时候就需要用C++实现不可被拷贝的类。
若让一个C++类不能被拷贝,可显式地声明类的拷贝构造函数和赋值函数为私有函数,从而达到该类不可被拷贝的目的。
下面简单地提供一个基类,任何需要提供不可被拷贝功能的C++类只需从此类派生即可。


Noncopyable类示例:

//通过私有化拷贝构造函数和赋值函数而达到对象不可被拷贝的目的
//任何需提供不能被拷贝功能的类可以直接从Noncopyable派生即可

class Noncopyable
{
protected:
    Noncopyable();
    ~Noncopyable();
private:
    Noncopyable(const Noncopyable&);
    Noncopyable& operator=(const Noncopyable&);
};
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值