深拷贝和浅拷贝

简介: 类里面会为我们实现默认的拷贝,这个做的是值的拷贝,但是假如对象里的数据成员在堆上开辟了内存资源,如果继续浅拷贝就会导致两根指针指向同一块资源,从而产生内存泄漏问题。但是深拷贝可以解决这个问题,本文将详细介绍深拷贝与浅拷贝。

1.拷贝的分类:深拷贝和浅拷贝



2.深拷贝和浅拷贝的介绍

(1)深拷贝:自己实现的拷贝构造函数,对于栈上的对象直接进行赋值,对于堆上的对象,另外开辟一块内存并将其资源复制到我新开辟的一块内存上。不会产生资源泄漏问题。

(2)浅拷贝:类默认实现的拷贝构造,只是将所有成员的值拷贝到我身上。容易产生资源泄漏问题。

下面我们通过一段简短的代码理解深拷贝与浅拷贝。

#include <iostream>usingnamespacestd;
classA{
public:
A(constA&a)
    {
this->a_=a.a_; // 普通成员直接赋值b_=newint;
*b_=*a.b_; // 堆上的成员需要额外分配内存    }
private:
inta_=10;
int*b_=newint{ 20 };
};
intmain(void)
{
return0;
}
相关文章
|
SQL Java 数据库连接
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
1973 3
|
Java Unix 程序员
【OS Ctags】Vim 代码阅读工具 Ctags
【OS Ctags】Vim 代码阅读工具 Ctags
312 0
【OS Ctags】Vim 代码阅读工具 Ctags
|
存储 安全 数据挖掘
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(1)
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(1)
551 1
|
Java 应用服务中间件 Nacos
阿里巴巴NACOS(3)- 部署Nacos的生产集群环境
上一篇文章介绍了如何在Spring Cloud中使用Nacos,让我感觉是无缝支持Spring Cloud,可惜的是阿里云的MSE暂时只支持Nacos的服务注册和发现,配置中心还是需要用阿里云的ACM来完成,本文将介绍如何部署Nacos的生产集群环境。
13943 0
阿里巴巴NACOS(3)- 部署Nacos的生产集群环境
|
存储 消息中间件 Java
快速了解分布式跟踪系统 Zipkin
【8月更文挑战第8天】快速了解分布式跟踪系统 Zipkin
302 3
快速了解分布式跟踪系统 Zipkin
|
10月前
|
机器学习/深度学习 算法
深入理解SVM中的核函数及其应用
深入理解SVM中的核函数及其应用
324 78
|
10月前
|
人工智能 自动驾驶 算法
AI的未来发展与挑战
本文探讨了人工智能(AI)的未来发展趋势和面临的主要挑战。通过对当前AI技术的概述,本文分析了AI在不同行业中的应用现状,并展望了未来的发展方向。同时,本文还讨论了AI发展中可能遇到的伦理、法律和技术难题,提出了相应的解决策略。
|
监控 安全 数据挖掘
这些屏幕监控软件一键轻松监控员工,速来试用
本文介绍了几款顶级屏幕监控软件,如WorkWin和Teramind,用于提升团队效率和保障企业安全。WorkWin提供远程控制、USB管理、权限分配等功能,确保合规运营和信息安全。Teramind能监控员工应用使用,发送实时警报,并进行数据分析。而ActivTrak则有实时屏幕监控和详细分析报告,帮助管理者优化工作流程。这些工具助力企业有效管理团队,提高生产力。
379 4
|
10月前
|
人工智能 监控 数据可视化
低代码开发平台,快速搭建云MES系统
低代码平台是一种通过可视化操作减少手工编码的高效开发工具,适用于快速构建和交付应用软件。万界星空科技的AI低代码云MES系统具备快速开发、灵活可扩展、降低维护成本、智能分析与决策等优势,支持生产计划、质检、库存管理、数据大屏、自定义报表等功能,助力企业实现生产过程的数字化和智能化转型,提升运营效率和市场竞争力。
544 4
|
人工智能 搜索推荐 数据处理
如何利用AI技术提高教育评估的效率和准确性?
【6月更文挑战第2天】如何利用AI技术提高教育评估的效率和准确性?
850 59