C语言中深拷贝和写时拷贝的图文详解是怎样的?

2026-04-18 22:291阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1209个文字,预计阅读时间需要5分钟。

C语言中深拷贝和写时拷贝的图文详解是怎样的?

前言:之前我们讨论了6个成员函数中提到的深浅拷贝问题,现在再首推一一梳理。

一、深浅拷贝哪家强?先给出代码,再理解原理。

pythonimport copy

class A: def __init__(self, value): self.value=value self.list=[1, 2, 3]

a=A([1, 2, 3])b=copy.deepcopy(a)c=copy.copy(a)

浅拷贝a.list[0]=0print(b.list) # 输出:[1, 2, 3]print(c.list) # 输出:[0, 2, 3]

深拷贝b.value=10print(a.value) # 输出:[1, 2, 3]print(b.value) # 输出:10

通过以上代码,我们可以看出:- 浅拷贝只会拷贝对象本身,对于对象中的可变对象(如列表、字典等),只会拷贝其引用。- 深拷贝会递归拷贝对象中的所有可变对象,生成一个全新的对象。

总结:深拷贝比浅拷贝更安全,但性能较差。在实际应用中,应根据具体需求选择合适的拷贝方式。

前言

之前我们在浅谈6个成员函数中有提到深浅拷贝的问题,现在再回首掏一把。

阅读全文

本文共计1209个文字,预计阅读时间需要5分钟。

C语言中深拷贝和写时拷贝的图文详解是怎样的?

前言:之前我们讨论了6个成员函数中提到的深浅拷贝问题,现在再首推一一梳理。

一、深浅拷贝哪家强?先给出代码,再理解原理。

pythonimport copy

class A: def __init__(self, value): self.value=value self.list=[1, 2, 3]

a=A([1, 2, 3])b=copy.deepcopy(a)c=copy.copy(a)

浅拷贝a.list[0]=0print(b.list) # 输出:[1, 2, 3]print(c.list) # 输出:[0, 2, 3]

深拷贝b.value=10print(a.value) # 输出:[1, 2, 3]print(b.value) # 输出:10

通过以上代码,我们可以看出:- 浅拷贝只会拷贝对象本身,对于对象中的可变对象(如列表、字典等),只会拷贝其引用。- 深拷贝会递归拷贝对象中的所有可变对象,生成一个全新的对象。

总结:深拷贝比浅拷贝更安全,但性能较差。在实际应用中,应根据具体需求选择合适的拷贝方式。

前言

之前我们在浅谈6个成员函数中有提到深浅拷贝的问题,现在再回首掏一把。

阅读全文