克隆()对象是什么意思?

时间:2009-11-17 15:19:47

标签: clone

什么是vb6或java中的对象克隆?在什么情况下我们使用克隆?克隆对象意味着什么?任何人都可以通过示例告诉我。

2 个答案:

答案 0 :(得分:10)

克隆实际上是将对象数据复制到一个新对象中。

此示例不克隆数据:

Foo p = new Foo();
Foo o = p;

如果Foo有成员a并且您更改了p.a,那么o.a也会发生变化,因为po都指向相同的对象

然而,

Foo p = new Foo();
Foo o = p.Clone();

在这种情况下,如果您更改p.a,则o.a保持不变,因为它们实际指向不同的对象。

实际上有两种不同的克隆方式:浅克隆或深克隆。

浅层克隆只生成一个新对象并将成员复制到新对象中。这意味着如果其中一个成员实际上是指向另一个对象的指针,那么该对象将在旧对象和新对象之间共享。

深度克隆实际上会通过并将所有成员克隆到新对象中。这样,对象就是所有数据的完整副本。

答案 1 :(得分:2)

一般来说,对象通过引用传递。所以如果你说$objB=$objA你没有得到一个新的对象;您正在获取同一对象的新名称。但是,如果您说$objB= clone $objA,则会获得$objA的副本。在第一种情况下,无论您对$objB所做的一切都发生在$objA。在第二种情况下,$objB是独立的。