拷貝構造 深拷貝與淺拷貝

2021-09-25 14:50:05 字數 942 閱讀 3925

拷貝建構函式用乙個已有同類物件的資料對正在建立的物件進行資料初始化

c++為類提供預設版本的拷貝建構函式

預設複製建構函式可以完成物件的資料成員值簡單的複製

物件的資料資源是由指標指示的堆時,預設複製建構函式僅作指標值複製,即為淺拷貝

class teachert

//顯示的提供乙個拷貝建構函式,來完成深拷貝動作

teachert(const teachert &t)

mname = new char[strlen(t.mname) + 1];

strcpy_s(mname, strlen(t.mname) + 1, t.mname);

mid = t.mid;

} //過載賦值操作符,完成深拷貝動作

teachert& operator= (teachert &another)

mname = new char[strlen(another.mname) + 1];

strcpy_s(mname, strlen(another.mname) + 1, another.mname);

mid = another.mid;

return *this;

} ~teachert()

} void printt()

private:

int mid;

char *mname;

};

使用預設提供的拷貝建構函式(進行淺拷貝)和賦值運算子---出現問題:

顯示提供拷貝建構函式(深拷貝)和過載賦值運算子---解決問題:

拷貝建構函式,深拷貝與淺拷貝

一.拷貝建構函式 先直接來看 include include help.h using namespace std class line private char msg line line const char msg line line const line line line line voi...

拷貝建構函式淺拷貝深拷貝

1 函式的引數為類物件且引數採用值傳遞方式 2 將類物件做為函式的返回值。2.淺拷貝 所謂淺拷貝,指的是在物件複製時,只對物件中的資料成員進行簡單的賦值 預設拷貝建構函式執行的也是淺拷貝。大多情況下 淺拷貝 已經能很好地 工作了,但是一旦物件存在了動態成員,那麼淺拷貝就會出問題了,讓我們考慮如下一段...

拷貝建構函式,深拷貝,淺拷貝

深淺拷貝的區別 淺拷貝是將原始物件中的資料型字段拷貝到新物件中去,將引用型字段的 引用 複製到新物件中去,不把 引用的物件 複製進去,所以原始物件和新物件引用同一物件 新物件中的引用型字段發生變化會導致原始物件中的對應欄位也發生變化。line line const line obj 深拷貝是在引用方...