拷贝构造函数(深拷贝+浅拷贝)

news2025/1/23 13:03:56

目录

  • 拷贝构造函数
  • 浅拷贝
  • 深拷贝

拷贝构造函数

拷贝构造函数:

Myclass(const Myclass& myclass)
{
     a=myclass.a;
     b=myclass.b;
     c=myclass.c;
}

浅拷贝

浅拷贝的思路就是和默认的拷贝构造函数一样: 即将原对象的值直接赋值给新对象,这样做一般情况下是没什么问题的,但是如果类的成员有指针,就会导致新对象中的指针和原对象中的指针指向的是一个地址.这样就会有若干风险存在

  • 对新对象中的指针内容修改时,原对象中的指针内容也会被修改
  • 对新对象析构后,再对原对象析构,就会导致对同一个地址释放释放两次.

深拷贝

在这里插入图片描述

深拷贝的思路是,开辟新的空间,让新对象中的指针和原对象中的指针分别指向不同的空间.

所以说当类中有成员函数是指针的情况下,我们就不能使用浅拷贝,而应
当使用深拷贝.

使用深拷贝的例子:

class Myclass
{
     char *str;
     public:
     Myclass(const Myclass & myclass)
     {
          int n = strlen(myclass.str)+1;
	      str = new char[n];
	      strcpy(str,myclass.str);
     }
}

ps:
这里把语句str=new char[n],改成

str=new char;
str=new char();
str=new char[0];
..........

都是能正常编译且运行的,只不过编译器会给出警告,提示溢出缓冲区
另外strcpy这个函数在VS版本中已经因为不安全而被弃用了,如果想在VS中使用这个函数,需要加上

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

如果使用 strcpy_s版本开辟空间

Myclass(const Myclass & myclass)
     {
          int n = strlen(myclass.str)+1;
	      str = new char[n];
	      strcpy_s(str,n,myclass.str);
     }

缓冲区的大小=背复制的字符串的长度+1;
strcpy的安全版本:strcpy_s使用方法:
strcpy_s

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

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

相关文章

加拿大儿童床垫认证标准要求介绍SOR/2016-152

儿童床垫是专为儿童设计的睡眠配件&#xff0c;用于提供舒适的睡眠环境和正确的睡眠支持 SOR/2016-152是加拿大政府发布的法规&#xff0c;旨在确保儿童床垫的安全性和质量。SOR/2016-152标准要求儿童床垫具有足够的安全性能&#xff0c;能够保护儿童免受潜在的危险和伤害。 标…

ArcGIS10.1软件安装教程

ArcGIS10.1中英文&#xff08;32/64位)下载地址&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1Ksm112WaKMMk6La9ircCng 密码&#xff1a;t70f 安装步骤&#xff1a; 1、我们对安装包进行解压&#xff0c;直接鼠标右击解压即可。 2、 打开我们解压的文件夹&#…

瞄准办公场景,未来智能靠“AI+耳机”后来居上?

如何在广阔红海中开拓出蓝海&#xff1f;未来智能或可作为参考案例。 作为TWS耳机玩家&#xff0c;未来智能成立于2021年&#xff0c;日前完成了由天际资本领投的数千万元Pre-A轮融资&#xff0c;这也是该公司成立以来完成的第二轮融资。 从成立时间来看&#xff0c;在广阔的…

Python学习之路 01如何安装Python

&#x1f600;前言 在当今数字化的时代&#xff0c;编程已成为一项基本技能。Python&#xff0c;因其简洁易学、功能强大和高度可扩展性而闻名&#xff0c;已成为许多初学者和专业开发人员的首选编程语言。不仅如此&#xff0c;Python拥有一个庞大而活跃的社群&#xff0c;提供…

科学中的人工智能:量子、原子和连续体技术概述

人工智能&#xff08;AI&#xff09;的进步正在推动自然科学领域的一种新的发现范式。如今&#xff0c;AI已经开始通过改进、加速和促进我们对各种空间和时间尺度上自然现象的理解来推动自然科学的发展&#xff0c;催生了一个被称为AI for science&#xff08;AI4Science&#…

SpringMVC之JSON数据返回及异常处理机制

目录 一.JSON数据的返回 二.异常处理机制 2.1 异常处理方式一 2.2 异常处理方式二 2.3 异常处理方式三 一.JSON数据的返回 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于Web应用程序和服务之间的数据传输。通过使用…

MATLAB R2022b遇到“License Manager Error -8”怎么解决

电脑系统更新过后&#xff0c;matlab突然用不了了&#xff0c;报Error -8错误 将破解文件中的 libmwlmgrimpl.dll 复制 粘贴到 安装目录/R2022b/bin/win64/matlab_startup_plugins/lmgrimpl 直接替换 然后直接在 安装目录/R2022b/bin/ 打开matlab.exe

mingw 编译 curl ,Qt 工程使用

mingw 编译 curl 下载curl 源码 https://github.com/curl/curl 我使用8.3版 CMake-gui 配置 源码路径&#xff1a;D:/workspace/CPP/curl-8.3.0 生成路径: D:/workspace/CPP/curl-8.3.0/mingw-build 点击 Configure ,弹窗配置&#xff0c;选择 MinGW Makefiles 选择 Spec…

Codeforces Round 896 (Div. 2)

A.Make It Zero 思维题 当n为偶数时,对1到n异或使得1到n全部变成一样的数,再对1到n异或,使得全部变成0 当n为奇数时,对1到2异或使得1到2全部变成一样的,再对1到2异或,使得1到2都变成0,然后再两次对2到n AC代码: #include<iostream> #include<algorithm> #incl…

建筑模板国家标准GB/T 17656-2018

建筑模板国家标准GB/T 17656-2018《混凝土模板用胶合板》的重要性与应用 GB/T 17656-2018《混凝土模板用胶合板》国家标准是建筑模板行业的重要指导性文件&#xff0c;旨在确保混凝土模板的质量、安全和可靠性&#xff0c;促进建筑施工的高效进行。该标准详细规定了混凝土模板用…

DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?

随着上门按摩、上门养老、上门买菜、上门维修等互联网上门服务的兴起&#xff0c;越来越多的居民开始采用线上下单&#xff0c;享受企业安排人员上门到家的服务。而家庭维修作为到家服务里面典型的一个场景&#xff0c;已成为许多人不可或缺的一部分。然而&#xff0c;与此同时…

【校招VIP】排序算法之高级排序

考点介绍&#xff1a; 在校招面试中,排序算法是经常被问到的。排序算法又比较多,很容易遗忘和混淆。有相当同学校招卡在排序的实现上,要么是核心代码实现不了,要么是实现方法串台。大厂的考察重点在快速排序等高级排序上。 排序算法之高级排序-相关题目及解析内容可点击文章末…

高级感满满的巡课效果怎么做?一招搞定!

学校是培养未来一代领袖和知识传承的地方&#xff0c;因此&#xff0c;确保学校内的教育质量和管理效率至关重要。在这个信息时代&#xff0c;技术正在不断演进&#xff0c;为学校管理和监督提供了更多的工具和方法。 在线巡课系统可以帮助学校管理人员更好地监督教学活动、评估…

【操作系统】进程的状态

进程的五种状态 创建&#xff0c;就绪&#xff08;等待分配处理机CPU资源&#xff09;&#xff0c;执行&#xff0c;阻塞&#xff08;叫阻塞因为相对CPU来说它很慢&#xff0c;等待除CPU以外的资源&#xff0c;如I/O&#xff09;&#xff0c;终止。 创建好的进程放入就绪队列等…

基于永磁同步发电机的风力发电系统研究(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MS SQL Server问题汇总

1.报SQL Server Agent连接不上的错误 15:38:57.991 [debezium-sqlserverconnector-sqlserver_transaction_log_source-change-event-source-coordinator] WARN i.d.connector.sqlserver.SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; pl…

mysql中left join时join和on的先后顺序

1.mysql中在内连接时,on的效果无论是对驱动表还是非驱动表和where的效果是一样的 ,on的顺序在join的前面 2.在外连接中 on 中添加筛选条件,只会对非驱动表生效,对驱动表是没有作用的,所以只有对非驱动表时,on的顺序是在join前面

pytorch代码实现之分布偏移卷积DSConv

DSConv卷积模块 DSConv&#xff08;分布偏移卷积&#xff09;可以容易地替换进标准神经网络体系结构并且实现较低的存储器使用和较高的计算速度。 DSConv将传统的卷积内核分解为两个组件&#xff1a;可变量化内核&#xff08;VQK&#xff09;和分布偏移。 通过在VQK中仅存储整…

天津Java培训班 Java的就业方向有那哪些?

Java具有独特的卓越通用性、效率性、安全性和平台可移植性等优点&#xff0c;近年来得到了众多学生的支持&#xff0c;它可以应用于跨平台的不同领域&#xff0c;工作需求量非常大&#xff0c;并且在业务应用程序的发展中扮演着重要的角色。因此有许多人想要转行成为Java工程师…

达梦数据库之 PERCENT_RANK()over()函数和 PERCENTILE_CONT() WITHIN GROUP()OVER()函数详解

排列百分比 PERCENT_RANK 例 求图书的现价排列百分比。 SELECT NAME, PERCENT_RANK() OVER(ORDER BY NOWPRICE) AS NTILE FROM PRODUCTION.PRODUCT; 查询结果如下&#xff1a; NAMENTILE老人与海0.000000000000000E000突破英文基础词汇1.111111111111111E-001工作中无小事2.2…