C++淺拷貝和深拷貝

老司機的詩和遠方發表於2020-04-06

用一句簡單的話來說就是淺拷貝,只是對指標的拷貝,拷貝後兩個指標指向同一個記憶體空間,深拷貝不但對指標進行拷貝,而且對指標指向的內容進行拷貝(重新分配有記憶體),經深拷貝後的指標是指向兩個不同地址的指標。因此淺拷貝釋放記憶體的時候很容易出現因為釋放兩個指標而記憶體出錯。

拷貝情況:
當物件中存在指標成員時,除了在複製物件時需要考慮自定義拷貝建構函式,還應該考慮以下兩種情形:
1.當函式的引數為物件時,實參傳遞給形參的實際上是實參的一個拷貝物件,系統自動通過拷貝建構函式實現;
2.當函式的返回值為一個物件時,該物件實際上是函式內物件的一個拷貝,用於返回函式呼叫處。

相關文章