淺拷貝的例子

2021-08-30 09:15:01 字數 373 閱讀 8594

淺拷貝和深拷貝的問題多發生在指標變數或者包含指標型別成員的類的物件之間。

先看乙個簡單例程:

#include

using namespace std;

int main()

語句3就是將p1所指向的記憶體作了拷貝給p2,一人一塊。

以上是乙個簡單而直接的例子來說明淺拷貝和深拷貝的問題,而大多數時候這個問題是隱蔽地發生在含有指標型別成員的類的物件之間的。在用乙個類的物件例項化另乙個物件時(如:

obj2(obj1);),如果使用預設的拷貝建構函式來例項化,則是一種淺拷貝,如要達到深拷貝的效果,則應該自定義乙個拷貝建構函式來手動實現。當然,如果類中沒有指標型別的成員,則沒有這個必要,但如果有的話,還是很有這個必要的。

幾個例子理解淺拷貝和深拷貝

一 記憶體的堆疊 基本型別 存放在棧記憶體中的簡單資料段,資料大小確定,記憶體空間大小可以分配,當它賦給另乙個變數的時候,另乙個變數發生改變,原資料不會發生改變 var a 5 var b a b 1 console.log b 6 console.log a 5 5種基本資料型別有undefine...

python淺拷貝 Python中的淺拷貝和深拷貝

在python中,賦值語句不複製物件,它們只是在目標和物件之間建立繫結。當我們使用 運算子時,使用者認為這會建立乙個新物件 好吧,其實並沒有。它只建立乙個共享原始物件引用的新變數。有時使用者想要使用可變物件,為了做到這一點,使用者希望找到建立這些物件的 真實副本 或 轉殖 的方法。或者,有時使用者想...

淺拷貝 深拷貝

copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...