C 淺拷貝和深拷貝

2021-07-24 10:53:25 字數 823 閱讀 4967

#include using namespace std;

class cexample

cexample(cexample& other)

~cexample() }

int m_a;

int m_b;

char* m_char;

};int main()

; array(const array & other);

array(int * a, int n);

void setnum(int value, int index);

int * getaddress();

int getlength()

void display();

private:

int length;

int * num;

};array::array(int *a, int n)

}void array::setnum(int value, int index)

{ if(index < length)

num[index] = value;

else

cout<<"index out of range!"<

總結:1、淺拷貝,即拷貝建構函式,將已宣告的物件的成員變數簡單賦值給乙個新的類的物件。

2、深拷貝,即拷貝建構函式,類的物件的成員變數存在新的記憶體申請,而不是簡單的物件成員變數的簡單賦值。

3、構造類時候,顯式的實現拷貝建構函式是好習慣,以免出現一些不可**的問題。

4、如果不顯式的實現拷貝建構函式,編譯器會自動生成拷貝建構函式,這裡的拷貝建構函式就是淺拷貝。

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 ...