2 回答

TA貢獻1966條經(jīng)驗 獲得超4個贊
有的時候,創(chuàng)建一個對象可能會非常耗時,比如對象需要從遠程數(shù)據(jù)庫中獲取數(shù)據(jù)來填充,又或者創(chuàng)建對象需要讀取硬盤文件。此時,如果已經(jīng)有了一個對象,再創(chuàng)建新對象時,可能會采用復制現(xiàn)有對象的方法,而不是重新建一個新的對象。
淺度復制 和 深度復制 是以如何復制對象的成員(member)來劃分的。一個對象的成員有可能是值類型,有可能是引用類型。當我們對對象進行一個淺度復制的時候,對于值類型成員,會復制其本身(值類型變量本身包含了所有數(shù)據(jù),復制時進行按位拷貝);對于引用類型成員(注意它會引用另一個對象),僅僅復制引用,而不創(chuàng)建其引用的對象。結(jié)果就是:新對象的引用成員和 復制對象的引用成員 指向了同一個對象。
深度復制就是將引用成員指向的對象也進行復制。實際的過程是創(chuàng)建新的引用成員指向的對象,然后復制對象包含的數(shù)據(jù)。深度復制可能會變得非常復雜,因為引用成員指向的對象可能包含另一個引用類型成員,最簡單的例子就是一個線性鏈表。如果一個對象的成員包含了對于線性鏈表結(jié)構(gòu)的一個引用,淺度復制 只復制了對頭結(jié)點的引用,深度復制 則會復制鏈表本身,并復制每個結(jié)點上的數(shù)據(jù)。

TA貢獻1836條經(jīng)驗 獲得超5個贊
關鍵類象內(nèi)引用淺拷貝保持引用類象內(nèi)引用深拷貝連引用象起拷貝
比School類邊SchoolName校名稱teacher象
淺拷貝拷貝SchoolNameteacher前引用象(拷貝象修改teacher值影響象teacher值)深拷貝連teacher拷貝新象前象完全復制修改teacher值影響象teacher值
添加回答
舉報