卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

對象的深拷貝實現(xiàn)方法 編程里面的深拷貝和淺拷貝各是什么意思,怎么理解這兩個?

編程里面的深拷貝和淺拷貝各是什么意思,怎么理解這兩個?淺拷貝意味著源對象和拷貝對象共享同一個實體,只是引用的變量不同(名稱不同)。對其中一個對象的更改會影響另一個對象。例如,一個人的名字起初是張三,后

編程里面的深拷貝和淺拷貝各是什么意思,怎么理解這兩個?

淺拷貝意味著源對象和拷貝對象共享同一個實體,只是引用的變量不同(名稱不同)。對其中一個對象的更改會影響另一個對象。例如,一個人的名字起初是張三,后來改成了李四,但卻是同一個人。無論是張三缺胳膊缺腿,還是李四缺胳膊缺腿,都是同一個人的厄運。深度復(fù)制是指源對象和復(fù)制對象相互獨立,任何對象的改變都不會影響到另一個對象。例如,一個叫張三的人被用來克隆另一個叫李四的人。不管張三缺胳膊缺腿,李四缺胳膊缺腿,都不會影響別人。典型的是值對象,例如預(yù)定義的類型int32、double、struct、enum等

PHP對象的淺復(fù)制與深復(fù)制的實例詳解?

原型模式

使用原型實例指定要創(chuàng)建的對象的類型,并通過復(fù)制這些原型來創(chuàng)建新對象

原型模式基于深度復(fù)制和淺層復(fù)制。在Java中,有兩種拷貝:

shallow copy

拷貝一個對象后,會生成一個新的對象。新對象的所有成員變量(基本類型或引用類型)都包含與原始對象相同的對象

如果原始對象的成員變量是基本數(shù)據(jù)類型,則此變量的值將復(fù)制到新對象。如果原始對象的成員變量是引用數(shù)據(jù)類型,則此引用指向的對象將不會生成新的引用,而是

新對象中的引用和原始對象的引用指向同一對象。

深度復(fù)制

復(fù)制對象后,將生成一個新對象。新對象的基本數(shù)據(jù)類型變量包含與原始對象相同的值。例如

如果原始對象的成員變量是引用數(shù)據(jù)類型,則在新對象中,這些引用變量將指向復(fù)制的新對象,而

不再指向原始引用對象。深度復(fù)制將復(fù)制被復(fù)制對象引用的所有對象。

例如:

有一個對象a,它被復(fù)制以生成對象B。如果對象a中有一個int類型變量I的值為4,則對象B中的int值也是4。將a改為int類型變量不會影響B(tài)。如果a中有一個引用類型為

的成員變量C,它將指向?qū)ο驞。復(fù)制后,B中也會有一個C,它也指向?qū)ο驞,a的C和B的C指向同一個

對象D,這是淺層復(fù)制。如果是深度復(fù)制,a中的C指向一個D對象,B中的C指向一個新對象

,它們不會指向同一個對象。這樣,對原始對象中成員變量C指向的對象D所做的任何更改都不會影響新對象。

舉一個最簡單的例子:

classA{

publicinti

publicintj

}

AA=newa()

淺拷貝:

Aa1=a

深拷貝:

Aa1=newa()

A1。I=A.I

A1。J=A.J

感覺如下:

淺拷貝只復(fù)制對象本身

深拷貝復(fù)制對象中引用的對象并繼續(xù)復(fù)制。

淺拷貝與深拷貝的區(qū)別是什么?

1. 深拷貝和淺拷貝都是源對象的拷貝,占用不同的內(nèi)存空間。

2. 不可變類型的對象對深副本和淺副本沒有影響,并且最終地址值和值是相等的。

3. 變量類型:

=淺復(fù)制:等值,等地址

淺復(fù)制:等值,不等地址

深復(fù)制:等值,不等地址