Discussion: If a class is a resource handle, it needs a constructor, a destructor, and copy and/or move operations

讨论:如果一个类是资源句柄,则它需要一个构造函数,一个析构函数以及复制和/或移动操作

Reason(原因)

To provide complete control of the lifetime of the resource. To provide a coherent set of operations on the resource.

提供对资源生命周期的完全控制。在资源上提供连贯的操作集。

Example(示例)

??? Messing with pointers

Note(注意)

If all members are resource handles, rely on the default special operations where possible.

如果所有成员都是资源句柄,请尽可能依靠默认的特殊操作。

template<typename T> struct Named {string name;T value;
};

Now Named has a default constructor, a destructor, and efficient copy and move operations, provided T has.

现在,Named类具有默认的构造函数,析构函数以及有效的复制和移动操作(如果T具有)。

Enforcement(实施建议)

In general, a tool cannot know if a class is a resource handle. However, if a class has some of the default operations, it should have all, and if a class has a member that is a resource handle, it should be considered as resource handle.

通常,工具无法知道类是否是资源句柄。但是,如果类具有某些默认操作,则应具有全部默认操作,并且如果类具有作为资源句柄的成员,则应将其视为资源句柄。

原文链接https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#discussion-if-a-class-is-a-container-give-it-an-initializer-list-constructor

新书介绍

《实战Python设计模式》是作者最近出版的新书,拜托多多关注!

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

C++核心准则讨论:如果一个类是资源句柄,则它需要一个构造函数,一个析构函数以及复制和/或移动操作相关推荐

  1. 一个类可以实现多个接口但是只能实现一个类

    public class SpbmServiceImpl extends BasicServiceImpl implements ISpbmService,ISpbmDao {} 一个类可以实现多个接 ...

  2. Java黑皮书课后题第6章:6.9(英尺和米之间的转换)编写一个类,包含如下两个方法:编写一个测试程序,调用这两个方法以显示下面的表格

    6.9(英尺和米之间的转换)编写一个类,包含如下两个方法:编写一个测试程序,调用这两个方法以显示下面的表格 题目 题目概述与运行示例 破题 代码(本题) 题目 题目概述与运行示例 6.9(英尺和米之间 ...

  3. C++核心准则​讨论:如果在初始化期间需要“虚行为”,请使用工厂函数

    Discussion: Use a factory function if you need "virtual behavior" during initialization 讨论 ...

  4. c++ file* 句柄泄漏_C++核心准则?讨论:持有没有被句柄管理的资源时切勿抛出异常...

    Discussion: Never throw while holding a resource not owned by a handle 讨论:持有没有被句柄管理的资源时切勿抛出异常 Reason ...

  5. C++核心准则​讨论:析构,释放和交换操作必须永不失败

    Discussion: Destructors, deallocation, and swap must never fail 讨论:析构,释放和交换操作必须永不失败 Never allow an e ...

  6. java定义一个类计算圆的半径,C++编程:定义一个圆类要求属性为半径,操作为计算圆的周长和面积...,java编程:定义一个圆类,属性为半径,方法为对输入的半径计...

    导航:网站首页 > C++编程:定义一个圆类要求属性为半径,操作为计算圆的周长和面积...,java编程:定义一个圆类,属性为半径,方法为对输入的半径计 C++编程:定义一个圆类要求属性为半径, ...

  7. C++核心准则E.6:使用RAII防止资源泄露

    E.6: Use RAII to prevent leaks E.6:使用RAII防止资源泄露 Reason(原因) Leaks are typically unacceptable. Manual ...

  8. 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则

    文章目录 6个默认成员函数 构造函数 概念 默认构造函数的类型 默认实参 概念 默认实参的使用 默认实参声明 全局变量作为默认实参 某些类不能依赖于编译器合成的默认构造函数 第一个原因 第二个原因 第 ...

  9. 3-3:类与对象中篇——默认成员函数之构造函数和析构函数

    文章目录 一:类的默认6个成员函数 二:构造函数 (1)构造函数的概念 (2)构造函数注意事项 三:析构函数 (1)析构函数的概念 (2)析构函数注意事项 一:类的默认6个成员函数 如果一个类里面什么 ...

最新文章

  1. 牛客题霸 [ 最长递增子序列] C++题解/答案
  2. 全球最大的LoRaWAN智能路灯项目刚刚启动
  3. 细说Golang的JSON解析
  4. 前方迷茫,我欲借何过大江
  5. iOS duplicate symbols for architecture x86_64 问题全面解析
  6. Linux磁盘管理基本配置
  7. 研磨java_研磨设计模式.pdf
  8. f(x)=sinx的求导过程
  9. 用友通总账问题维护精粹
  10. marlab中主成分得分怎么求_8款洁面泡沫洗面奶大评测,成分分析以及适用肤质介绍...
  11. GAX (Guidance Automation Extensions) 与 GAT (Guidance Automation Toolkit)
  12. python多图合并成一张图_python合并PDF文件、图片(先转化为A4纸大小PDF)
  13. 记录一个 Python 的 re.match() 的小坑
  14. 矩阵微分与向量函数Taylor展开
  15. 【VUE项目实战】40、添加商品分类功能(一)
  16. 纯干货!最全股票基础知识(上)
  17. rabbitmq和erlang版本对应关系
  18. 企业为什么需要做APP安全评估?
  19. 计算机三级上机题库百度云,全国计算机三级数据库等级考试全套(笔试背诵资料+笔试试题+详细答案+最新数据库技术上机试题题库).doc...
  20. 计算机毕业设计基于asp.net网上考试报名系统

热门文章

  1. 飞行棋程序(附源码)
  2. linux ln -s
  3. CorelDRAW 入门知识
  4. 王者服务器维修2019年四月份,王者荣耀2019年4月新皮肤有哪些?4月新皮肤什么时候出...
  5. 喜欢听音乐CD的请进:[技术贴]介绍APE+CUE格式的音乐文件
  6. 现代电商会员管理新玩法——付费会员
  7. 虚拟服务器鼠标左键被锁了,鼠标在网页里左键被锁怎么办
  8. 程序员为何喜欢debian_程序员为何拖延以及如何停止
  9. JavaEE:网络编程套接字
  10. 原始套接(ARP协议的使用)