C++ nocopyable

有时候我们要求某些类不能被拷贝,我们可以通过实现,一个不可拷贝的父类,子类对象继承父类对象,来达到子类对象不可拷贝的目的。
实现一个不可拷贝对象就是把拷贝构造函数和赋值运算符声明为私有的,同时实现构造函数(必须有,由于提供了拷贝构造,编译器不在提供)和析构函数。因此我们把nocopyable实现如下:

#ifndef NOCOPYABLE_H
#define NOCOPYABLE_H

class nocopyable {
protected:
  nocopyable(){};
  ~nocopyable(){};
private:
  nocopyable(const nocopyable& that);
  nocopyable& operator=(const nocopyable& that);
};

#endif //NOCOPYABLE_H

测试代码如下:

#include <iostream>
#include "nocopyable.h"

using namespace std;
//私有继承就可以
class nocopy : nocopyable {
};

int main() {
  nocopy no1;
//  nocopy no2 = no1;
  return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值