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)

相关推荐

  • 怎么使用span解决数组退化和越界访问

    技术怎么使用span解决数组退化和越界访问本篇文章给大家分享的是有关怎么使用span解决数组退化和越界访问,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。数组

    攻略 2021年11月10日
  • 霹雳的意思是什么,霹雳有什么诗号让人印象深刻

    技术霹雳的意思是什么,霹雳有什么诗号让人印象深刻一直以来《霹雳布袋戏》就深受大家的喜爱是因为它深入人心的角色,精彩的剧情。里面快意恩仇,肝胆相照,智冠群伦的智者,刀狂剑痴,心中唯有剑的柳生剑影,美丽的月神,视钱如命的杀手

    生活 2021年10月19日
  • 省略的拼音,举例说明ü上两点的省略规律

    技术省略的拼音,举例说明ü上两点的省略规律y和u不会相遇,ü遇到y要去两点,读音不变!ü遇到j、q、x、y去掉上面的点。拼读规则:ü行的韵母跟声母j,q,x拼的时候,写成ju,qu,xu,jue,que,xue,ü上两点

    生活 2021年10月23日
  • 坐便器品牌排行,什么牌子的马桶性价比高

    技术坐便器品牌排行,什么牌子的马桶性价比高马桶在家中的使用频率很高,所以选择一个质量过关坐便器品牌排行,且性价比高的马桶的至关重要,下面就为您简单介绍一些比较好的马桶的品牌,希望对您有所帮助。1、TOTO(于1917年日

    生活 2021年10月23日
  • JVM类加载机制是怎么样的

    技术JVM类加载机制是怎么样的本篇文章为大家展示了JVM类加载机制是怎么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. java类加载运行过程 加载:加载字

    攻略 2021年10月23日
  • Python操作语言的特点都有哪些

    技术Python操作语言的特点都有哪些Python操作语言的特点都有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python操作语言是软件开发领域

    攻略 2021年10月28日