C++为什么要保持默认操作的一贯性

技术C++为什么要保持默认操作的一贯性这篇文章主要介绍“C++为什么要保持默认操作的一贯性”,在日常操作中,相信很多人在C++为什么要保持默认操作的一贯性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

本文主要介绍“为什么C要保持默认操作的一致性”。在日常操作中,相信很多人对C为什么要保持默认操作的一致性有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解答“为什么C要保持默认操作的一致性”的疑惑!接下来,请和边肖一起学习!

C.22:保持默认操作的一贯性

Reason(原因)

默认操作在概念上是一整套处理,配合严格。它们的语义是相互关联的。如果复制/移动构造和复制/移动分配在逻辑上做了不同的事情,用户会感到惊讶。如果构造函数和析构函数没有为资源管理提供一致的想法,用户会感到惊讶。如果复制和移动操作没有相应的构造函数和析构函数动作,用户会感到惊讶。

Example, bad(反面示例)

类傻{ //BAD:复制操作不一致

Impl类{

//.

};

shared _ ptrImpl p;

公众号:

傻(const傻a): p { a . p } { * p=* a . p;} //深度复制

傻算符=(const傻a){ p=a . p;} //浅拷贝

//.

};这些操作(复制构造和赋值)对于复制有不同的语义(分别是深度复制和轻度复制)。这会导致混乱和错误。

'

Enforcement(实施建议)

ul class='

(复杂)复制/移动构造函数和相应的复制/移动赋值运算符应该在相同的取消引用级别上编写相同的成员变量。

(复杂)在复制/移动构造函数中编写的任何成员变量也应该由其他构造函数初始化。

(复杂)如果复制/移动构造函数对成员变量进行深度复制,析构函数应该修改成员变量。

(复杂)如果析构函数修改了一个成员变量,该成员变量应该写入复制/移动构造函数或赋值操作符。

至此,“C为什么要保持默认操作的一致性”的研究结束,希望能解决大家的疑惑。理论和实践的结合可以帮助你学得更好。去试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/124815.html

(1)

相关推荐

  • 洋葱炒蛋家常做法,洋葱炒鸡蛋.怎么做才好吃

    技术洋葱炒蛋家常做法,洋葱炒鸡蛋.怎么做才好吃主料洋葱200克鸡蛋100克辅料油适量盐适量酱油适量鸡精适量料酒适量步骤洋葱炒鸡蛋的做法步骤11.准备好所有食材洋葱炒蛋家常做法。洋葱炒鸡蛋的做法步骤22.把洋葱洗净,切成细

    生活 2021年10月20日
  • 如何进行数据库三大范式的分析

    技术如何进行数据库三大范式的分析这篇文章将为大家详细讲解有关如何进行数据库三大范式的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一: 引言 作为一个数据

    攻略 2021年12月2日
  • 如何进行MongoDB查询文档

    技术如何进行MongoDB查询文档如何进行MongoDB查询文档,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。查询文件使用inventory集合。插入inv

    攻略 2021年11月4日
  • 任劳任怨的意思,默默无闻任劳任怨是什么意思

    技术任劳任怨的意思,默默无闻任劳任怨是什么意思【拼音】任劳任怨的意思:mò mò wú wén【释义】:无声无息,没人知道。指没有什么名声。
    【出处】:《晋书·祖纳传》:“仆虽无无,非志不立,故疾没世而无闻焉。”
    【例句

    生活 2021年10月23日
  • 深的英文,深度的英语翻译深度用英语怎么说

    技术深的英文,深度的英语翻译深度用英语怎么说(深浅程度) degree of depth; depth:河水的深度the depth of the river;通过疏浚保持河道的深度深的英文。The depth of t

    生活 2021年10月20日
  • 望庐山瀑布的意思全解,古诗《庐山瀑布》的意思

    技术望庐山瀑布的意思全解,古诗《庐山瀑布》的意思意思香炉峰在阳光的照射下生起紫色烟霞,远远望见瀑布似白色绢绸悬挂在山前。高崖上飞腾直落的瀑布好像有几千尺,让人恍惚以为银河从天上泻落到人间。原文日照香炉生紫烟,遥看瀑布挂前

    生活 2021年10月28日