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

pbr*_*brp 8 clone

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

Aar*_*ron 10

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

此示例不克隆数据:

Foo p = new Foo();
Foo o = p;
Run Code Online (Sandbox Code Playgroud)

如果Foo有一个成员a并且你改变了,p.a那么o.a也会因为两者p而改变并o指向同一个对象.

然而,

Foo p = new Foo();
Foo o = p.Clone();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果您更改,p.ao.a保持不变,因为它们实际上指向单独的对象.

实际上有两种不同的方法可以克隆:浅克隆或深克隆.

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

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