国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

java深拷貝復制list c 中如何正確實現(xiàn)克?。ㄔ停┠J剑?/h1>

c 中如何正確實現(xiàn)克?。ㄔ停┠J剑靠寺∧J揭话阌糜诰哂幸谜Z義的語言(一般只能將引用復制到對象),如Java,需要通過克隆方法顯式創(chuàng)建與原始對象相同的對象;而C原則上不需要克隆模式,因為C本質(zhì)上是

c 中如何正確實現(xiàn)克?。ㄔ停┠J??

克隆模式一般用于具有引用語義的語言(一般只能將引用復制到對象),如Java,需要通過克隆方法顯式創(chuàng)建與原始對象相同的對象;而C原則上不需要克隆模式,因為C本質(zhì)上是值語義。一般來說,它有默認或自定義的復制構(gòu)造函數(shù)和復制賦值操作符,可以很容易地復制(深度復制)完全相同的對象,這是非常靈活的。可能用戶定義了一個具有引用語義的類(類似于智能指針)。此時,可以定義clone接口來提供深度復制對象的方法;

有關(guān)C復制控制、智能指針、移動語義等知識,可以參考c11系列文章。歡迎關(guān)注

PHP對象的淺復制與深復制的實例詳解?

原型模式

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

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

shallow copy

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

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

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

深度復制

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

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

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

例如:

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

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

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

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

舉一個最簡單的例子:

classA{

publicinti

publicintj

}

AA=newa()

淺拷貝:

Aa1=a

深拷貝:

Aa1=newa()

A1。I=A.I

A1。J=A.J

感覺如下:

淺拷貝只復制對象本身

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