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

C++问题:深拷贝和浅拷贝

什么是拷贝构造函数:

拷贝构造、赋值运算符:

用一个对象初始化一个新的对象,拷贝构造函数是把对象当作参数传入,利用传入的对象生成一个新的对象,赋值运算符是将对象的值赋值给一个已经存在的实例。调用的是拷贝构造函数还是赋值运算符,主要看是否有新的对象产生。

拷贝构造函数语法:className (const className &obj){主体}

使用场景:

使用一个已存在的对象创建一个新的对象

对象作为函数的返回值以值的方式从函数返回

对象作为函数参数,以值传递的方式传给函数

深拷贝与浅拷贝:

对象中含有指针类型的成员变量时需要用深拷贝构造,否则用浅拷贝构造

编译器默认的拷贝构造函数是浅拷贝构造函数,它只会复制一个一模一样的指针,并不会操作指针指向的东西,要实现自己的逻辑需求,就要自定义拷贝构造函数,实现深拷贝

如果对象中含有指针变量却使用了浅拷贝构造,那么会导致两个指针变量指向同一块地址空间,那么在对象释放时会导致一块空间释放两次,编译器报错(二次析构问题)

浅拷贝和深拷贝的区别在于两个指针变量指向的是一块空间还是指向不同的空间,如果没有创建内存的操作就是浅拷贝,否则是深拷贝

相关文章:

  • 华为网路设备学习-25(路由器OSPF - 特性专题 二)
  • 【图像处理入门】11. 深度学习初探:从CNN到GAN的视觉智能之旅
  • 超高速10G采集卡
  • 《记者观察》期刊投稿
  • ③-1实现 FastAdmin 默认开启通用搜索功能的方法
  • python3控制流程
  • 教师办工专用 资源包|课件+手抄报+PPT模板+常用表格 PDF格式93GB
  • Java八股文——计算机网络「网络攻击篇」
  • 数据结构 6(算法)
  • 计算机网络 网络层:数据平面(一)
  • Samba
  • Spark 在小众日常场景中的实战应用:从小店数据到社区活动
  • 对gateway和nocas的理解
  • 如何利用 Java 爬虫按关键字搜索 Amazon 商品:实战指南
  • 惠普HP Laser 105a打印机信息
  • Qt数据库
  • WinUI3入门6:子线程处理UI 窗口加载后执行 获取和设置控件尺寸 自动生成事件代码框架
  • 解锁微服务潜能:深入浅出 Nacos
  • 从“看懂”到“行动”: VLM 与 VLA
  • 吃透 Golang 基础:Goroutine
  • 东营 微信网站建设/seo快速排名软件app
  • vs2010如何做网站/网站群发推广软件
  • cdr 做网站/郑州seo实战培训
  • 东莞网站建设做网站/网站seo是什么
  • 如何做阿里巴巴的网站首页/国际站seo优化是什么意思
  • wordpress分类链接/最新seo网站优化教程