问题标签 [shallow-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
56 浏览

gdi+ - 对象库 - 访问索引值还是对象本身?(例如,也许是深拷贝还是浅拷贝?)

我一直对 .Net 如何复制引用感到困惑/不确定。假设我有一个 GDI+ 的位图对象。

'Foo' 保存位图对象。现在假设我这样做。

这是浅拷贝还是深拷贝?如果我将 foo 设置为无,bar 是否也会突然引用“无”?或者 bar 是否也包含位图的副本,并且为了从内存中完全删除位图,我需要将 'foo' 和 'bar' 都设置为空?

我需要在内存中保留一个位图库,对我来说,将每个创建的对象中每个位图的引用存储为变量会更容易,而不是使用索引对其进行编码并且每次都必须引用该库需要它(例如'BitmapLibrary.Singleton.getBitmap(id)')

简而言之,我可以这样做:

而不是这个:

0 投票
4 回答
2239 浏览

language-agnostic - 复制构造函数/操作符/函数是否需要明确它实现的复制变体?

昨天我问了一个关于在 C# 中复制对象的问题,大多数答案都集中在深复制浅复制之间的区别上,以及应该明确给定的复制构造函数(或运算符或函数)这两种复制变体中的哪一个实现。我觉得这很奇怪。

我用 C++ 编写了很多软件,这是一种严重依赖复制的语言,而且我从来不需要多个复制变体。我曾经使用过的唯一一种复制操作是我称之为“足够深的复制”的操作。它执行以下操作:

  • 如果对象拥有成员变量的所有权(参见composition),它会被递归复制。
  • 如果对象对成员变量没有所有权(参见聚合),则仅复制链接。

现在,我的问题有三个:

  • 1) 一个对象是否需要多个副本变体?
  • 2)复制功能是否需要明确它实现的复制变体?
  • 3)顺便说一句,我所说的“足够深的副本”是否有更好的术语?我问了一个有关“深拷贝”一词定义的相关问题
0 投票
1 回答
367 浏览

python - 如何浅拷贝应用引擎模型实例来创建新实例?

我想为我的应用引擎应用程序实现一个简单的 VersionedModel 基模型类。我正在寻找一种不涉及明确选择要复制的字段的模式。

我正在尝试这样的东西,但它对我的口味来说太老套了,还没有在生产环境中测试它。

有没有人有更简单的清洁解决方案来保存应用引擎模型的版本历史?

编辑:搬出copytx。感谢@Adam Crossland 的建议。

0 投票
1 回答
1093 浏览

c++ - 创建对象的克隆不适用于虚拟基类

运行时:

我的问题与thisthisthis post有关。

在第一个链接中, Space_C0wb0y 说

“由于clone-method是对象实际类的方法,它也可以创建一个深拷贝。它可以访问它所属的类的所有成员,所以没有问题。”

我不明白深拷贝是如何发生的。在上面的程序中,甚至没有发生浅拷贝。即使 Base 类是抽象类,我也需要它工作。我怎样才能在这里做一个深拷贝?请帮忙?

0 投票
2 回答
3287 浏览

c# - .net memberwiseclone 浅拷贝不起作用

我正在使用 this.MemberwiseClone() 创建浅拷贝,但它不起作用。请看下面的代码。

当我运行程序时,它显示 objCustomerShallowCopy.Name 为“James”而不是“Jim”。

有任何想法吗??

0 投票
2 回答
1591 浏览

java - android中意图中对象的浅拷贝

我有一些对象想通过意图传递给其他活动。但是,它们只需要是另一个对象的浅拷贝,因为它们只会被读取(即使它们要被修改,我也希望它们在原始活动中被修改),所以没有意义使对象可序列化,也因为并非对象中的所有字段都是可序列化的,我什至做不到。

此外,似乎使其可打包会遇到同样的问题。当然,似乎我可以在其中添加一些字段作为活动对象,但我不能让整个事情只是一个浅拷贝。

那么有什么方法可以在意图中制作对象的浅表副本,或者以任何其他方式将数据的浅表副本传递给另一个活动,就像您通常在 java 中传递参数一样?谢谢你。

0 投票
3 回答
2827 浏览

linq - Does LINQ new up memory when creating returns

Does LINQ actually perform a deep copy of the results to a different list/array/etc, or does it simply give me a list/array/etc. composed of references to the original?

0 投票
1 回答
485 浏览

arrays - .slice() 成为“浅克隆”意味着什么?

ActionScript 的 Array 和 Vector 类都有一个 slice() 方法。如果不传递任何参数,则新的 Array 或 Vector 是原始 Vector 的副本(浅克隆)。

“浅克隆”是什么意思?具体来说,有什么区别

? 另外,如果 Vector 的基本类型不是 Foo,而是像 int 这样简单且不可变的东西怎么办?

更新:

下面的结果是什么?

谢谢!♥</p>

0 投票
8 回答
43391 浏览

c++ - C ++中的默认赋值运算符=是浅拷贝?

只是一个简单的快速问题,我在其他任何地方都找不到可靠的答案。默认的 operator= 只是右侧所有类成员的浅表副本吗?

将等同于:

当我测试它时这似乎是正确的,但我需要确保我没有错过一些特定的情况。

0 投票
3 回答
3076 浏览

c++ - 浅拷贝有什么问题?

这是我从这里看到的一个面试问题:http: //www.careercup.com/question?id=1707701

想知道更多关于这个。谢谢