c++、Java、Python中的浅复制举例分析

介绍

本篇内容介绍了“c++、Java、Python中的浅复制举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

01

对象的浅复制,深复制问题,在面试中经常被问的到,不管是c++, Java,还是Python,一般都会问这个问题。今天以Python为例来说明浅复制问题。

02

从列表的副本()说起

先从简单说起,如下:

猴子=[& # 39;约翰# 39;& # 39;记载# 39;,& # 39;玛丽# 39;]

悟空=monkeys.copy ()

打印(悟空)

祝辞祝辞祝辞(& # 39;约翰# 39;& # 39;记载# 39;,& # 39;玛丽# 39;]

我们成功克隆出悟空。

到这里,还只是复制,完全看不出什么是浅复制。

3日接下来,就看浅复制

我们向猴子群体中,添加一组动物,如下,然后再次复制猴子。

monkeys.append ((& # 39; nuzha& # 39; & # 39; honghaier& # 39;])

打印(猴子)

#祝辞祝辞祝辞(& # 39;约翰# 39;& # 39;记载# 39;,& # 39;玛丽# 39;,[& # 39;nuzha& # 39; & # 39; honghaier& # 39;]]

打印(悟空)

#祝辞祝辞祝辞(& # 39;约翰# 39;& # 39;记载# 39;,& # 39;玛丽# 39;]

#再次复制视频软件名给悟空

悟空=monkeys.copy ()

打印(悟空)

#祝辞祝辞祝辞

此时打印悟空,可以看到:

[& # 39;约翰# 39;,,& # 39;记载# 39;,,& # 39;玛丽# 39;,,(& # 39;nuzha& # 39;,, & # 39; honghaier& # 39;]] 

这一点也不惊讶,接下来,就是见证奇迹的时刻:

悟空[1].append (& # 39; houzi& # 39;)

打印(悟空)

打印(猴子)

当我们从悟空的最后一个元素:它也是一个列表,添加一个动物:houzi时,我们只向悟空添加了一个动物,此时打印它,不惊讶,但是打印猴子,发现它也有了houzi

[& # 39;约翰# 39;,,& # 39;记载# 39;,,& # 39;玛丽# 39;,,(& # 39;nuzha& # 39;,, & # 39; honghaier& # 39;,, & # 39; houzi& # 39;]][& # 39;约翰# 39;,,& # 39;记载# 39;,,& # 39;玛丽# 39;,,(& # 39;nuzha& # 39;,, & # 39; honghaier& # 39;,, & # 39; houzi& # 39;]] 

这就是浅复制,当一个列表里的某个元素是个对象,比如列表、元组、dict及自建类,如果执行复制(),这个元素只是指针值的复制,不会递归复制它的内存。因此,将会引起上面的现象,因为都是同一个内存地址的两次引用。

c++、Java、Python中的浅复制举例分析