博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++题目--深复制与浅复制
阅读量:2382 次
发布时间:2019-05-10

本文共 798 字,大约阅读时间需要 2 分钟。

题目:请说说什么是深复制与浅复制?并实现代码来区别它们。

【答案】

如果一个类拥有资源,当这个类的对象发生对象发生复制过程的时候,这个过程就可以叫做深复制,如果对象存在资源但在复制过程中并未复制资源就是浅复制。

【解析】

浅复制如下:

class Test{public:         Test(int temp)         {        p=temp;         }         Test(Test &c_t)//自定义的拷贝构造函数         {         cout<<"进入copy构造函数"<

深复制又称为深拷贝,对于对象中的动态成员,就不仅仅是简单的赋值了,而是重新动态分配空间。

深复制的示例代码如下:

class Rect{public:         Rect()//构造函数,p指向堆中分配空间         {         p=new int(100);         }         Rect(const Rect &r)         {                   width=r.width;                   height=r.height;                   p=new int;//为新对象重新动态分配空间                   *p=*(r.p);         }         ~Rect()//析构函数,释放动态分配空间         {             if(p!=NULL)            {             delete p;            }         }private:         int width;         int height;         int *p;};

--

转载地址:http://jwwab.baihongyu.com/

你可能感兴趣的文章
ffmpeg系列:使用ffmpeg转换为RGB数据并缩放视频
查看>>
Vmware虚拟机设置固定IP地址
查看>>
能Ping通外网但就是不能打开所有网页的解决办法
查看>>
第五章 5.6.3节练习
查看>>
第六章 6.2.1节练习 & 6.2.2节练习
查看>>
第六章 6.2.3节练习
查看>>
第六章 6.2.4节练习
查看>>
第六章 6.2.5节练习 & 6.2.6节练习
查看>>
第六章 6.3.2节练习
查看>>
第六章 6.4节练习 & 6.5.1节练习
查看>>
第六章 6.5.2节练习
查看>>
Curator Framework操作zookeeper(1)-基本操作
查看>>
Linux 体系结构、远程登录、文件传输
查看>>
Linux 安装软件、配置静态IP
查看>>
JavaScript 函数、闭包
查看>>
JavaScript BOM
查看>>
JavaScript Date、Math对象、杂项
查看>>
JavaScript ES6入门
查看>>
Bootstrap的使用
查看>>
JavaScript ES6 代理,反射,函数,类
查看>>