当前位置: 首页 > news >正文

一小时学会网站建设住房和建设建设局网站

一小时学会网站建设,住房和建设建设局网站,广告策划的目的是什么,上海建设局官方网站在 C 编程里,深拷贝和浅拷贝是两种不同的对象复制方式,它们在实现方式、资源管理和适用场景等方面存在显著差异。下面为你详细介绍它们的区别。 1. 基本概念 浅拷贝:浅拷贝仅仅复制对象的成员变量值。对于基本数据类型(如 int、d…

在 C++ 编程里,深拷贝和浅拷贝是两种不同的对象复制方式,它们在实现方式、资源管理和适用场景等方面存在显著差异。下面为你详细介绍它们的区别。

1. 基本概念

  • 浅拷贝:浅拷贝仅仅复制对象的成员变量值。对于基本数据类型(如 intdouble 等),会直接复制其值;而对于指针类型的成员变量,浅拷贝只是复制指针的值(即内存地址),这就导致多个对象会共享同一块内存空间。
  • 深拷贝:深拷贝不仅会复制对象的成员变量值,当遇到指针类型的成员变量时,它会为新对象的指针成员分配一块新的内存空间,并将原对象指针所指向的内存内容复制到新的内存空间中,这样每个对象都拥有自己独立的内存副本。

2. 实现方式

浅拷贝

浅拷贝通常由编译器自动生成的默认拷贝构造函数和赋值运算符重载函数来实现。以下是一个浅拷贝的示例代码:

#include <iostream>class ShallowCopyExample {
public:int* data;ShallowCopyExample(int value) {data = new int(value);}// 默认拷贝构造函数实现浅拷贝ShallowCopyExample(const ShallowCopyExample& other) {data = other.data;}~ShallowCopyExample() {delete data;}
};int main() {ShallowCopyExample obj1(10);ShallowCopyExample obj2(obj1); // 浅拷贝return 0;
}

在这个示例中,obj2 的 data 指针和 obj1 的 data 指针指向同一块内存空间。

深拷贝

深拷贝需要程序员手动编写拷贝构造函数和赋值运算符重载函数来实现。以下是一个深拷贝的示例代码:

#include <iostream>class DeepCopyExample {
public:int* data;DeepCopyExample(int value) {data = new int(value);}// 深拷贝构造函数DeepCopyExample(const DeepCopyExample& other) {data = new int(*other.data);}~DeepCopyExample() {delete data;}
};int main() {DeepCopyExample obj1(10);DeepCopyExample obj2(obj1); // 深拷贝return 0;
}

在这个示例中,obj2 的 data 指针指向一块新的内存空间,该空间存储的是 obj1 中 data 所指向的值的副本。

3. 资源管理

  • 浅拷贝:由于多个对象共享同一块内存空间,当其中一个对象释放了这块内存后,其他对象的指针就会变成悬空指针,再次使用这些指针会导致未定义行为。而且,如果多个对象都试图释放同一块内存,会引发内存重复释放的错误。
  • 深拷贝:每个对象都有自己独立的内存副本,对象的析构函数可以安全地释放自己的内存,不会影响其他对象,避免了悬空指针和内存重复释放的问题。

4. 性能开销

  • 浅拷贝:浅拷贝只复制指针的值,不涉及内存的分配和数据的复制,因此性能开销较小,速度较快。
  • 深拷贝:深拷贝需要为指针成员分配新的内存空间,并将数据复制到新的内存中,涉及内存的分配和数据的复制操作,性能开销相对较大,速度较慢。

5. 适用场景

  • 浅拷贝:当对象中不包含动态分配的资源(如动态数组、动态对象等),或者对象的生命周期管理比较简单,不需要独立的资源副本时,可以使用浅拷贝。
  • 深拷贝:当对象中包含动态分配的资源,并且需要每个对象都有自己独立的资源副本时,必须使用深拷贝,以确保资源的正确管理和避免内存问题。
http://www.yayakq.cn/news/320288/

相关文章:

  • 安徽企业网站建设建设网站用户名是什么
  • 网站文章收录吉林省建设厅网站查询
  • 十堰网站建设报价淘宝网页版电脑版入口淘宝网
  • 单位做网站注意什么问题大连网站建设哪里好
  • 深圳做三网合一网站泰国做网站
  • 北京制作公司网站wordpress 固定链接404
  • 医学分类手机网站模版常德论坛网站
  • 电商网站订烟wordpress标题加密
  • 开发网站需要什么怎么查网站备案接入商
  • 网站弹广告是什么样做的单位网址怎么编
  • 郑州快速建站价格网站开发自学
  • 西安有哪些网站建设公司好企业seo可以达到怎样的效果
  • 网站开发算是研发支出吗企业网络组建工作流程
  • 淘宝联盟怎么推广赚钱石家庄网站优化招聘
  • 网站怎么做png阴影网站后台发布了但看不见
  • 网站建设 北京宣传渠道和宣传方式有哪些
  • 南宁怎么做网站深圳市网页制作
  • 做营销网站建设价格北京品牌营销的服务机构
  • 佛山市官网网站建设多少钱哪个公司做网站好
  • 爱站网是什么平台宁波建材信息造价中心
  • 自己的网站是什么样子的手机如何做微商城网站设计
  • 安康网站建设制作网页编辑人头
  • 湖北可以做网站方案的公司网站的seo优化报告
  • 新网 网站建立wordpress微信登录页面
  • 恩施北京网站建设贵州省建设项目备案查询网站
  • 谷歌网站为何打不开格兰仕网站开发方案
  • 盐城网站建设价格陕西建设工程信息网官网
  • 国外哪些做问卷赚钱的网站导航网站建设
  • seo网站分析报告前端好学吗需要学多久
  • 福州有什么做网站的公司wordpress 怎样打补丁