奇思妙想 · 2024年 4月 20日 0

为什么有浅拷贝和深拷贝两种模式?

38 次浏览

浅拷贝遵循最简约默认的规则,默认就是二进制bits的拷贝,不关心成员是否是引用,是否需要深入一级拷贝。

  • C语言结构体默认赋值行为即为二进制数据拷贝,即是浅拷贝模式。
  • C++继承C语言的行为,当然可自定义构造函数和赋值构造函数为深拷贝完成数据对象绝对分离。STL容器成员如果是对象指针,默认依然是浅拷贝。
  • Java/C#也遵循默认浅拷贝的方式。
  • Python提供copy模块的浅拷贝函数copy和深拷贝函数deepcopy,清晰定义了两种模式。