[lesson19]对象的构造(下)

news2024/11/29 11:56:53

对象的构造(下)

特殊的构造函数

  • 两个特殊的构造函数
    • 无参构造函数
      • 没有参数的构造函数
      • 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空
    • 拷贝构造函数
      • 参数为const class_name&的构造函数
      • 当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数简单的进行成员变量的值复制

拷贝构造函数

  • 拷贝构造函数的意义
    • 兼容C语言的初始化方式

    • 初始化行为能否符合预期的逻辑

    • 浅拷贝

      • 拷贝后对象的物理状态相同
    • 深拷贝

      • 拷贝后对象的逻辑状态相同
        编译器提供的拷贝构造函数只进行浅拷贝!
    • 什么时候需要进行深拷贝

      • 对象中有成员指代了系统中的资源
        • 成员指向了动态内存空间
        • 成员打开了外存中的文件
        • 成员使用了系统中的网络端口
    • 问题分析

      在这里插入图片描述

    • 一般性原则

      • 自定义拷贝构造函数必然需要实现深拷贝!!!

小结

  • C++编译器会默认提供构造函数
  • 无参构造函数用于定义对象的默认初始状态
  • 拷贝构造函数在创建对象时拷贝对象的状态
  • 对象的拷贝有浅拷贝深拷贝两种方式
    • 浅拷贝使得对象的物理状态相同
    • 深拷贝使得对象的逻辑状态相同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1586626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React复习全攻略:浅尝Redux的全局滋味

是什么? Redux 是一个使用叫做 “action” 的事件来管理和更新应用状态的模式和工具库 提供全局状态数据的单一仓库(对象树),管理应用的全局状态单一数据源,状态只读,状态修改只由纯函数完成 为什么用(特点…

C语言操作符详解(三)

一、表达式求值 1.1整型提升 C语言中整型算术运算总是至少以缺省整型类型的精度来进行的。 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。 如何进行整型提升呢? 1. 有符号整数提升是按…

如何理解Fourier Neural Operator (FNO)

写这篇blog是因为多方参考才读懂这两篇文章,希望能用自己的语言表达出来加深一下理解。因为是刚刚开始学习这部分内容,错误之处敬请指出。 文章目录 前言算子Operator概念理解问题建立Graph Neural Operator的思想证明采样多少个数据点可以用来表示一组a…

五金件外观检测机如何确保产品质量?

五金件是指由金属材料制成的各种零部件或制品,主要用于各种机械设备、工具、建筑结构以及其他领域。五金件通常由金属加工、铸造、锻造等方式制造,具有耐久性、强度高、稳定性强等特点。应用于工业制造、建筑、家具、汽车、电子产品等领域。 本案五金件尺…

Linux使用C语言实现Socket编程

Socket编程 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 网络套接字 socket: (电源)插座(电器上的)插口,插孔,管座 在通信过程中, 套接字是成对存在的, 一个客户端的套接字, 一个…

佛山市人工智能产业生态交流会:实在智能Agent引领“智造浪潮”

制造业,实体经济的核心,技术创新的先锋,供给侧结构性改革的关键。在新一轮产业竞争中,数字化转型成为制造业升级的必由之路,是引领未来的重要抓手。 为促进数字经济赋能实体经济,加快人工智能技术的推广应用…

Object类里面的clone方法与接口cloneable的理解

文章目录 前言一、Object类二、Cloneable接口 前言 今天在进行使用clone方法时产生了一个疑问,为什么Object类明明有clone()方法,但为什么还要加上cloneable这个接口呢,下面我们就来解答一下为什么要重写clone()方法非要加上cloneable接口&a…

Ant Design 表单基础用法综合示例

Ant Design 的表单组件设计得非常出色,极大地简化了表单开发的复杂度,让开发者能够快速构建出功能丰富、交互友好的表单界面。 接下来总结一下 Ant Design 中表单的基本用法。 Form 组件 用于定义整个表单,可以设置表单的布局方式、提交行为等。通常会将表单字段组件嵌套在 F…

Meta宣布全新训推一体加速器:完全集成PyTorch 2,性能3倍提升

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 Meta 疯狂砸入数十亿美元,一部分招揽人才,一部分造芯片。 Meta 正在不…

用户状态保持机制-Session

0、业务需求 会话:web应用中的会话是指一个客户端浏览器和服务器之间连续发生的一系列请求和响应的过程。 会话状态:web应用中的会话状态是指web服务器与浏览器在会话过程中产生的状态信息,借助会话状态,服务器能够把属于同一会话…

1572. 【基础赛】涂色(paint)

1572. 【基础赛】涂色(paint) (Input: paint.in, Output: paint.out) 时间限制: 2 s 空间限制: 256 MB 具体限制 题目描述 Introl获得了一个N行的杨辉三角,他将每行中值为奇数的位置涂为了黑色。 Chihiro将提出M次询问,在第L…

51单片机上面的IIC协议

1、什么是IIC协议 2、模拟IIC协议 51单片机上面是没有与IIC协议相关的寄存器的(没有相关的硬件),不像串口可以配置对应的寄存器达到目的(比如修改波特率9600 or 115200),要配置IIC只能够根据用户手册里面的…

【LeetCode】单调栈类题目详解

所有题目均来自于LeetCode,刷题代码使用的Python3版本 单调栈 通常针对一维数组的问题,如果需要寻找一个元素右边或者左边第一个比自己大或者小的元素的位置,就可以使用单调栈,时间复杂度为O(n) 单调栈的本质是空间换时间&#…

[AIGC] Spring中的SPI机制详解

文章目录 1. 什么是SPI2. Spring中的SPI机制3. Spring SPI的工作流程4. Spring SPI的应用 1. 什么是SPI SPI (Service Provider Interface)是Java中服务提供者接口的缩写,它是Java提供的一种用于被第三方实现或扩展的接口,SPI的作…

2024 年最新前端工程师使用 Webpack 模块打包工具详细教程(更新中)

概述 Webpack 模块打包工具 Webpack 是一个现代的静态模块打包工具,用于将前端应用程序的各种资源(例如如:JavaScript、CSS、图片等)视为模块,并将它们打包成可以在浏览器中运行的静态文件。它的主要功能包括模块打包…

对 FileReader 的理解

1、文档 FileReader - Web API 接口参考 | MDN 2、概念 FileReader 对象是一个内置的 JavaScript 对象,用于在客户端(浏览器)中异步读取文件内容。 它提供了一种在 Web 应用程序中读取文件数据的方式,可以读取文件内容并将其转…

跟TED演讲学英文:The next grand challenge for AI by Jim Fan

The next grand challenge for AI Link: https://www.ted.com/talks/jim_fan_the_next_grand_challenge_for_ai? Speaker: Jim Fan Date: October 2023 文章目录 The next grand challenge for AIIntroductionVocabularyTranscriptSummary后记 Introduction Researcher Jim…

MySQL事务、主从、分库分表常见面试题

文章目录 1.事务的特性2.并发事务问题,如何解决,默认隔离级别3.undo log和redo log的区别4.事务中的隔离性是如何保证的(解释一下MVCC)5.主从同步原理6.分库分表 1.事务的特性 2.并发事务问题,如何解决,默认…

2022年蓝桥杯省赛软件类C/C++B组----积木画

想借着这一个题回顾一下动态规划问题的基本解法,让解题方法清晰有条理,希望更多的人可以更轻松的理解动态规划! 目录 【题目】 【本题解题思路】 【DP模版】 总体方针: 具体解题时的套路: 【题目】 【本题解题思…

压缩列表ziplist

目录 1压缩列表的结构 2.压缩列表节点的构成 previous_entry_length encodeing conent 3.压缩列表API 1.创建列表 ziplistNew 2.正向遍历 ziplistNext 3.反向遍历 ziplistPrev 4.插入元素 ziplistInsert 5.级联更新 __ziplistCascadeUpdate 6.删除节点 7.查找entr…