首页 > 解决方案 > 浅/深拷贝术语是否适用于没有引用的对象?

问题描述

免责声明

这篇文章是关于术语“浅拷贝”和“深拷贝”的正确用法,特别是在谈论复制不包含任何引用的对象时。这个问题并不意味着(也不应该)基于意见,除非关于这个话题确实没有达成共识。我已将此问题标记为 C,但它可能与语言无关,除非这些术语在该上下文中的含义已针对特定语言明确定义,但不适用于其他语言。

前言

在复制带有引用的对象时,通常使用术语“浅拷贝”和“深拷贝”,以指定副本是否完整(独立于原始副本)。

但是,我也看到在复制没有引用的对象时使用了这个术语,这两个术语的含义完全相同,无需区分。到目前为止,我还没有找到一个简洁的定义来涵盖这些术语的这种特殊用途。

我认为这两个术语都不合适,因为“浅拷贝”意味着拷贝不完整,而“深拷贝”意味着拷贝需要某种特殊处理(或高成本)。由于复制没有引用的对象既完整又不需要任何特殊处理,我认为这些术语都不应该使用。然而,这篇文章不是关于我的想法,而是编程社区当前的共识(如果有的话)是什么。

问题

当我复制没有引用的对象时,是否会考虑

部分深拷贝是否有一个好的术语,其中一些字段是浅拷贝的,而另一些是深拷贝的?

标签: cterminologydeep-copyshallow-copy

解决方案


当区别不适用时,只需将其称为“副本”。它不是浅拷贝,因为没有共享引用,也不是深拷贝,因为除了结构中的值之外什么都没有被复制。

这个问题就像问岩石是否是无神论者。当然,他们不是有神论者。但是有神论者/无神论者的区别真的适用于他们吗?有些秤只设计用于测量某些事物。


推荐阅读