如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。預設的拷貝建構函式是淺拷貝,會造成記憶體洩漏。
本質上就是建構函式(特殊),用乙個已有的物件整體初始化新的物件
如
student s1(01,"zz",18);//比如你建立了乙個學生物件s1 學號是01 名字是zz 年齡是18
//這時候你呼叫建構函式 完成了物件s1的初始化
student s2;
s2 = s1;
//建立了物件s2 但是沒有初始化,然後通過s1初始化s2
物件以值傳遞的方式傳入函式引數;
物件以值傳遞的方式從函式返回;
物件通過另外乙個物件進行初始化。
淺拷貝:只是對物件進行簡單的賦值,拷貝後兩個指標指向同乙個記憶體空間,會使析構函式釋放兩次。
深拷貝:在對含有指標成員的物件進行初始化的時候,必須使用自己定義的拷貝建構函式(建立乙個private的拷貝建構函式),使拷貝後的指標成員有自己的記憶體空間。
//寫學生類的拷貝建構函式
student(const student &s)
最後:物件的賦值和複製有什麼區別?應用場景是怎麼樣的? 關於拷貝建構函式
首先不要使用vc編譯器來測試,看看這段 並猜想它會呼叫幾次建構函式和析構函式,最後再測試一下 在vc編譯執行後結果大失所望吧?不明白不要緊,vc這個整合的ide開發工具它的 博大精深 值得我們慢慢學習與積累,先看看下面我查詢的資料吧 一 拷貝建構函式 拷貝建構函式,是一種特殊的建構函式,它由編譯器呼...
關於拷貝建構函式
1 乙個物件用於給另外乙個物件進行初始化 賦值初始化 2 乙個物件作為函式引數,以值傳遞的方式傳入函式體 3 乙個物件作為函式返回值,以值傳遞的方式從函式返回 原則 對於凡是包含動態分配成員或包含指標成員的類都應該提供拷貝建構函式 對於第一種情況,先用乙個例子進行以下的說明 這個類的主要特點是包含指...
關於學業,我想說
面對著電腦,我感到了茫然.記得ibm創始人沃森說過這麼一句話 當面臨重大打擊的時候,人們通常會有三種選擇,第一種選擇是萎靡不振,完全垮掉 第二種選擇是勉強恢復到正常狀態 第三種選擇是把挫折看成是上帝所賜予的重大歷史機遇,勇敢面對,力創奇蹟 這一年多來,雖然也談不上遇到什麼重大打擊,可總覺得自己在漫漫...