深复制和浅复制:
浅复制,浅复制是指源对象与复制出来的对象共用一份实体,对其中任何一个对象的改动都会影响另外一个对象。相当于复制了指针。
深浅复制与数据类型:
memberwiseclone 方法创建当前对象的浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。图解:
代码说明:<喎?https: www.2cto.com/kf/ware/vc/"="" target="_blank" class="keylink">vc3ryb25npkmj1tc1xmr91+nkx9l908pqzbxesetbv6oszai5/bbuyv3x6bxeultwxrxe0d3kvqgjwo294snux7o4tnbgoam8l3a+cjxwpsezultwxqo6pgjypgo8l3a+cjxwpjwvcd4kphbyzsbjbgfzcz0="brush:java;">public class shallowcopy : icloneable
{
public int[] s = { 1,2,3,4 };
public object clone()
{
return this.memberwiseclone();
}
public void display()
{
foreach (int i in s)
{
console.write(i + ",");
}
console.writeline();
}
}客户端:(1)
通过obj1.s[1]=1和obj2.s[2]=1,我们可以看出,浅复制只要任意一个实例化的对象对引用的对象进行修改,都以最后一次的修改为准。 深复制:
深复制实例化的对象如果进行修改如obj1.s[1]=1只是对对象obj1进行了修改,并不影响obj2。 总结:复制功能实现从一个对象在创建另一个可制定的对象,而不需要知道任何创建的细节,我们所学的原型模式就是复制功能的体现。
客户端:(2)
public class deepcopy : icloneable
{
public int[] s = { 1, 2, 3, 4};
public deepcopy()
{
}
private deepcopy(int[] s)
{
this.s = (int[])s.clone();
}
public object clone()
{
// 构造一个新的deepcopy对象
return new deepcopy(this.s);
}
public void display()
{
foreach (int i in s)
{
console.write(i + ", ");
}
console.writeline();
}
}
}
客户端:
如对本文有疑问, 点击进行留言回复!!
《CTF特训营》web部分读书笔记(二)跨站脚本攻击(XSS)
国密SM1\ SM2\ SM3\ SM4\ SSF33算法和国际RSA算法的对应关系
网友评论