淺拷貝與深拷貝的區別

2021-08-21 05:39:27 字數 496 閱讀 8360

簡單的來說就是,在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,釋放記憶體的時候就不會出現在淺拷貝時重複釋放同一記憶體的錯誤!

我列舉乙個例子來說吧:

你正在編寫c++程式中有時用到,操作符的過載。最能體現深層拷貝與淺層拷貝的,就是『=』的過載。

看下面乙個簡單的程式:

class string

string()

{};string & operator=(const string s)

};int main()

上面的 =過載其是就是實現了淺拷貝原因。是由於物件之中含有指標資料型別.s1,s2恰好指向同一各記憶體。所以是淺拷貝。而你如果修改一下原來的程式:

string&operator=(const string&s)

這樣你就實現了深拷貝,原因是你為被賦值物件申請了乙個新的記憶體所以就是深拷貝。

淺拷貝與深拷貝的區別

簡單的來說就是,在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,釋放記憶體的時候就不會出現在淺拷貝時重複釋放同一記憶體的錯誤!我列舉乙個例子來說吧 你正在編寫c 程式中有時用到,操...

淺拷貝與深拷貝的區別

在python中有乙個copy模組。copy.copy 是淺拷貝 copy.deepcopy 是深拷貝 對於不可變型別,無論是淺拷貝還是深拷貝都只是指向作用,沒有進行拷貝,對於可變型別copy.copy 與copy.deepcopy存在差距 import copy a 1,2,3 b 4,5 c a...

深拷貝與淺拷貝的區別

參考 先考慮一種情況,對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。先看乙個例子,有乙個學生類,資料成員時學生的人數和名字 include using namespace std class student studen...