C++三大函数

embedded/2024/12/21 17:58:13/

三大函数:拷贝构造、拷贝赋值、析构

只要你的类带有指针,则一定不能用编译器给的默认拷贝函数

拷贝构造函数用于创建新对象并初始化。

MyList<int> mylistCopy = *mylistPtr; // 通过拷贝构造函数创建新对象

拷贝赋值运算符用于将一个已存在对象的值赋给另一个已存在对象

MyList<int> mylistCopy; mylistCopy = *mylistPtr; // 通过拷贝赋值运算符赋值

三大函数的定义:

image-20240622203729392

三大函数的使用:

使用浅拷贝的危害:

浅拷贝在复制过程中,仅复制对象的内存地址或其基本属性值,而不是其深层关联的数据结构。对于包含指针或动态分配内存的对象,浅拷贝不会分配新的内存,而是直接复制指针地址。
C++中默认的拷贝赋值即为浅拷贝,因此必须要有copy ctor copy op=实现深拷贝

5、1拷贝构造函数

构造函数的形参是 const Class & ,是自身

5、2拷贝赋值

重写操作符 operator=

5、3析构函数

String::~String() {delete[] m_data;    
}
//析构函数的作用:释放构造函数申请的内存空间->new,防止内存泄漏


http://www.ppmy.cn/embedded/147589.html

相关文章

图书馆管理系统(二)基于jquery、ajax

单元三 页面搭建及功能实现 学习目标 该部分就是我们最重要的一部分&#xff0c;现在开始进行页面搭建&#xff0c;并完成一些功能的实现等等&#xff0c;最后整合完成该项目的制作。 任务3.1 登录页面 任务描述 这个任务我们将进行登录页的搭建&#xff0c;以及使用AJAX在…

python elasticsearch_dsl PIT Point in time API 查询

默认情况下&#xff0c;搜索请求针对目标索引的最新可见数据&#xff08;称为时间点&#xff09;执行。elasticsearchpit&#xff08;时间点&#xff09;是一种轻量级视图&#xff0c;可以查看数据在启动时的状态。在某些情况下&#xff0c;最好使用同一时间点执行多个搜索请求…

Excel技巧:使用PowerQuery批量提取文件名

前面给大家分享了简单的excel提取文件名方法&#xff0c;今天继续分享&#xff0c;进阶版excel文件批量提取文件名的方法。 点击excel工具栏中的【数据】功能&#xff0c;点击获取数据 – 来自文件 – 从文件夹 然后找到需要提取文件名的文件夹&#xff0c;点击打开&#xff0…

正则表达式入门教程

正则表达式入门教程 1. 引言 正则表达式(Regular Expression,简称Regex)是一种用于处理字符串的强大工具,它允许用户通过特定的模式(pattern)来搜索、匹配、查找和替换文本中的数据。正则表达式在文本处理、数据验证、数据提取等领域有着广泛的应用。本教程将带你了解正…

视频及JSON数据的导出并压缩

npm下载安装 jszip 和 file-saver 这两个库来实现文件的压缩和保存功能&#xff1a; npm install jszip npm install file-saver 导入依赖库&#xff1a; import JSZip from jszip; import { saveAs } from file-saver; 方法实现&#xff1a; batchDownload() {const zip…

硬件之DCDC开关电源

一、BUCK降压原理&#xff08;重点&#xff09; 1、这里其实就是开关S不停的通断&#xff0c;形成PWM波 2、L电感&#xff0c;电容C和续流二极管之间形成回路&#xff0c;这样就可以输出想要的电压了 假设PWM的电压为15V&#xff0c;经过续流回路之后就会输出5V 二、选型 1、…

HTML5技术深度解析与实战应用

引言 HTML5作为新一代的HTML标准&#xff0c;带来了许多新特性和改进&#xff0c;这些变化不仅提升了网页的表现力&#xff0c;也为开发者提供了更多的工具和API来构建丰富、互动的网络应用。本文将深入解析HTML5的关键特性&#xff0c;并提供实战应用示例&#xff0c;帮助开发…

Node的学习以及学习通过Node书写接口并简单操作数据库

Node的学习 Node的基础上述是关于Node的一些基础&#xff0c;总结的还行&#xff1b; 利用Node书写接口并操作数据库 1. 初始化项目 创建新的项目文件夹&#xff0c;并初始化 package.json mkdir my-backend cd my-backend npm init -y2. 安装必要的依赖 安装Express.js&…