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.a则o.a保持不变,因为它们实际上指向单独的对象.
实际上有两种不同的方法可以克隆:浅克隆或深克隆.
浅层克隆只生成一个新对象并将成员复制到新对象中.这意味着如果其中一个成员实际上是指向另一个对象的指针,那么该对象将在旧对象和新对象之间共享.
深度克隆实际上会通过并将所有成员克隆到新对象中.这样,对象就是所有数据的完整副本.
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |