C 學習筆記8 深拷貝和淺拷貝

2021-10-11 03:09:31 字數 802 閱讀 2113

對於帶有指標的類我們才需要深拷貝和淺拷貝這個問題。

/*

* @time: 2020/6/1

* @author: mmyd

*/#include#includeusing namespace std;

class strelse

}//拷貝構造

str(const str& str)

//拷貝複製

str& operator=(const str& str)

char* get_c_str()

//析構

~str()

};int main(){

str s1("s1"), s2("s2");

cout對於深拷貝我們需要重新定義拷貝構造和拷貝複製。因為淺拷貝是系統按位一位一位全部拷貝複製,使用系統提供的拷貝構造和拷貝複製會造成兩者內部的指標相同,當進行指標free的時候,便會產生問題

如果我們使用delete,將會造成記憶體洩漏,洩露的是物件內動態分配的記憶體。如果我們new的陣列中的物件內部不存在指標,那麼使用delete而不是delete並不會造成記憶體洩漏。

C 淺拷貝和深拷貝

class test test const test t val new int t.val test private int val 現在定義兩個物件,test t1 9 test t2 t1 如果你不提供copy建構函式 注釋掉的那個 那麼t1和t2的成員 val指向同乙個物件,當析構的時候,同...

c 深拷貝和淺拷貝

深拷貝和淺拷貝 ca const ca c 就是我們自定義的拷貝建構函式。可見,拷貝建構函式是一種特別的建構函式,函式的名稱必須和類名稱一致,他的唯一的乙個引數是本型別的乙個引用變數,該引數是const型別,不可變的。例如 類x的拷貝建構函式的形式為x x x 當用乙個已初始化過了的自定義類型別物件...

c 深拷貝和淺拷貝

對於普通型別的物件來說,它們之間的複製是很簡單的,例如 int a 88 int b a 而類物件與普通物件不同,類物件內部結構一般較為複雜,存在各種成員變數。下面看乙個類物件拷貝的簡單例子。iostream using namespace std class cexample void show ...