淺拷貝與深拷貝

2021-08-14 08:25:37 字數 449 閱讀 6714

1, 淺拷貝,拷貝的是物件的指標,也即目標指標與被拷貝的指標指向同乙個記憶體空間。一旦記憶體被銷毀,指向該記憶體位址的所有的指標都將不再可用。

2, 深拷貝,拷貝的是物件的內容,就是說根據源指標位址指向的內容分配新的空間,並將內容拷貝到新空間中,目標指標指向的是新的位址,即目標指標與被拷貝的指標指向的是不同的記憶體空間。

示例:淺拷貝:

char *src = new char[10];

strcpy(src, 「haha」);

char *dest =src;  //dest和src指向同乙個位址

深拷貝:

char *src = newchar[10];

strcpy(src, 「haha」);

char *dest = new char[10];

strcpy(dest,src);  //dest和src位址儲存的內容相同,但位址已不同

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝與深拷貝

淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...