2 回答

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

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