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