What does it mean to clone() an object?

前端 未结 2 1476
情深已故
情深已故 2021-02-15 18:31

What is object cloning in vb6 or java? In what situation do we use a clone? What does cloning objects mean? Can any one tell me with example please.

2条回答
  •  广开言路
    2021-02-15 18:57

    Cloning is actually copying the object data into a new object.

    This example doesn't clone the data:

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

    If Foo has a member a and you change p.a then o.a also changes because both p and o point to the same object.

    However,

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

    In this case if you change p.a then o.a remains the same because they actually point to separate objects.

    There are actually two different ways you can clone: shallow clone or deep clone.

    A shallow clone just makes a new object and copies the members into the new object. This means that if one of the members is actually a pointer to another object then that object will be shared between the old object and new object.

    A deep clone actually goes through and clones all the members into the new object. That way the objects are complete copies of all the data.

提交回复
热议问题