對於帶有指標的類我們才需要深拷貝和淺拷貝這個問題。
/*
* @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 ...