深复制与浅复制(深拷贝与浅拷贝)
来源:互联网 发布:康德 二律背反 知乎 编辑:程序博客网 时间:2024/05/22 13:42
拷贝有两种:深拷贝,浅拷贝
当出现类的等号赋值时,会调用拷贝函数在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。
当数据成员中没有指针时,浅拷贝是可行的。但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象。所以,这时,必须采用深拷贝。
深拷贝与浅拷贝的区别就在于深拷贝会在堆内存中另外申请空间来储存数据,从而也就解决了指针悬挂的问题。
简而言之,当数据成员中有指针时,必须要用深拷贝。
class A{ char * c;}a,b;//浅复制不会重新分配内存a=b;相当于memcpy(&a,&b,sizeof(a));//a.c==b.c//深复制需要自己处理里面的指针class A{ char * c; A& operator =(const A&b) { this.c=malloc(...); strcpy(this.c,b.c); }}a,b;//这个是深复制,它有自定义的复制函数,赋值时,对指针动态分配了内存a=b;
- C#中浅拷贝与深拷贝(复制)
- 深复制与浅复制(深拷贝与浅拷贝)
- java List复制:浅拷贝与深拷贝
- C++类的副本构造器之深复制(拷贝)与浅复制(拷贝)
- 【C++】拷贝构造函数之浅复制与深复制
- python浅复制与深复制 /浅拷贝与深拷贝
- C++类对象之间复制,拷贝构造函数的作用,深拷贝与浅拷贝
- 复制对象 和 浅拷贝,深拷贝
- 复制构造函数&深拷贝&浅拷贝
- python中的复制 浅拷贝 深拷贝
- python复制,浅拷贝,深拷贝理解
- Python 深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)
- C++复制构造函数详解(深拷贝,浅拷贝)
- 在iOS用的.unity3d文件
- Linux NFS配置
- android-listview拖动时背景变黑的问题 分类: android开发
- 介绍Unicode的编码方式和实现方式
- 8.10总结『by AndyJ』
- 深复制与浅复制(深拷贝与浅拷贝)
- IETester必备浏览器测试工具
- 文件与目录管理
- java中字符集的问题
- Windows与Linux比较
- 如何杀掉由NFS造成Uninterruptible的进程
- 常用论坛网址汇总(实时更新)
- 很不错的资源网站
- 链表反转的两种实现方法