中易网

编程里面的深拷贝和浅拷贝各是什么意思,怎么理解这两个?

答案:2  悬赏:70  
解决时间 2021-02-26 12:47
编程里面的深拷贝和浅拷贝各是什么意思,怎么理解这两个?
最佳答案
浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。
深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。
全部回答
浅拷贝就是成员数据之间的一一赋值:把值赋给一一赋给要拷贝的值。但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资源,或者一个文件。。当值拷贝的时候,两个对象就有用共同的资源,同时对资源可以访问,这样就会出问题。深拷贝就是用来解决这样的问题的,它把资源也赋值一次,使对象拥有不同的资源,但资源的内容是一样的。对于堆资源来说,就是在开辟一片堆内存,把原来的内容拷贝。     如果你拷贝的对象中引用了某个外部的内容(比如分配在堆上的数据),那么在拷贝这个对象的时候,让新旧两个对象指向同一个外部的内容,就是浅拷贝;如果在拷贝这个对象的时候为新对象制作了外部对象的独立拷贝,就是深拷贝  引用和指针的语义是相似的,引用是不可改变的指针,指针是可以改变的引用。其实都是实现了引用语义。  深拷贝和浅拷贝的区别是在对象状态中包含其它对象的引用的时候,当拷贝一个对象时,如果需要拷贝这个对象引用的对象,则是深拷贝,否则是浅拷贝。 
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
兰珍五金这个地址在什么地方,我要处理点事
合众人寿保险怎么退保
预源老师算命年运如何?
如图所示,三个完全相同的电阻(阻值均不大于
英特尔 t2050 @ 1.60GHz是几核的?
福灵康大药房中海店地址在哪,我要去那里办事
有没有什么布之类的,常年浸泡在泥巴,水里不
求助:三星A9P总是莫名其妙重启
手机壳哪种好
鞍山哪里 收旧衣物
竹子的特点作文200字
中国农业银行垛石分理处在什么地方啊,我要过
感冒吃荸荠的做法?
朗动1.6自动领先领型改装后视镜自动折叠能实
巴彦县国土局巴彦国土所在什么地方啊,我要过
推荐资讯
西回辕村这个地址在什么地方,我要处理点事
义工旅游安全吗
请问昆明市实验中学与云子中学(昆明市第十二
华为ce12808 大概多少钱
除了灶还有什么字带有土?🔒🔑
二元logistic回归的自变量中有两个相关可以吗
公司强制性要求未转正员工购买高价(600元夏
白坑这个地址在什么地方,我要处理点事
金华动物园怎么去啊,有知道地址的么
金菠萝国际儿童教育中心这个地址在什么地方,
本人身高187。。 雅阁能坐开吗?
药书里的处方1.)处方2.外方.3.i/是什么意思呢
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?