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)

相关推荐

  • 如何理解Mybatis源码

    技术如何理解Mybatis源码本篇内容介绍了“如何理解Mybatis源码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为

    攻略 2021年10月22日
  • python空气质量数据举例分析

    技术python空气质量数据举例分析这篇文章主要讲解了“python空气质量数据举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python空气质量数据举例分析”吧

    攻略 2021年11月29日
  • mybatis 一对多

    技术mybatis 一对多 mybatis 一对多xml version="1.0" encoding="UTF-8"
    !DOCTYPE mapperPUBLIC "-//mybatis.org//D

    礼包 2021年12月5日
  • Python怎么抓取京东商城评价

    技术Python怎么抓取京东商城评价这篇文章主要讲解了“Python怎么抓取京东商城评价”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么抓取京东商城评价”吧

    攻略 2021年12月1日
  • 胆战心惊什么意思,胆战心惊中的战字是什么意思

    技术胆战心惊什么意思,胆战心惊中的战字是什么意思宠辱不惊 宠:宠爱。受宠受辱都不在呼。指不因个人得失而动心。宠辱若惊 无论受宠胆战心惊什么意思、受辱,心里都要振动。形容人非常计较得失。怵目惊心 看见某种严重情况,心里感到

    生活 2021年10月19日
  • Spark Connector Reader 原理与实践是怎样的

    技术Spark Connector Reader 原理与实践是怎样的本篇文章为大家展示了Spark Connector Reader 原理与实践是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介

    攻略 2021年12月3日