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)

相关推荐

  • 狗狗来大姨妈,母狗狗也会来“大姨妈”

    技术狗狗来大姨妈,母狗狗也会来“大姨妈”会滴,会滴,只要是母的狗,都会来红色朋友狗狗来大姨妈。嗯,红色朋友,就是大家指的大姨妈。母狗,在长到六七个月的时候就会来红色朋友。在狗狗的世界里,这叫做发情期啦!狗狗发情期一般是十

    生活 2021年10月29日
  • mysql创建删除索引(mysql中如何删除索引)

    技术mysql如何删除index索引小编给大家分享一下mysql如何删除index索引,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    攻略 2021年12月21日
  • 关于keyframes的用法

    技术关于keyframes的用法 关于keyframes的用法CSS3的@keyframes用法详解:@keyframes与animation属性是密切相关的
    一.基本知识:keyframes翻译成中文

    礼包 2021年12月5日
  • C++构造函数怎么用

    技术C++构造函数怎么用这篇文章给大家分享的是有关C++构造函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.作用一种特殊类型的方法,在每次实例化对象时运行2.代码举例2.1 示例1

    攻略 2021年11月21日
  • Linux和Unix磁盘管理命令对比的示例分析

    技术Linux和Unix磁盘管理命令对比的示例分析小编给大家分享一下Linux和Unix磁盘管理命令对比的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Unix的LVM是当前使用过的最好用的文件

    攻略 2021年11月18日
  • 端口扫描工具AutoRecon怎么用

    技术端口扫描工具AutoRecon怎么用这篇文章给大家介绍端口扫描工具AutoRecon怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。今天给大家推荐一款端口扫描工具:AutoRecon一、环境

    攻略 2021年12月10日