C 學習筆記之淺拷貝 深拷貝的理解

2021-10-04 18:52:40 字數 436 閱讀 6922

淺拷貝就是把類中的成員屬性簡單的複製,如果有指標成員變數,也只是拷貝指標的位址。

下面案例就是先建立teacher1物件,再把它初始化給teacher2物件,在初始化時需要呼叫複製建構函式,因為teacher類沒有重寫複製建構函式,所以此處呼叫編譯器提供的預設複製建構函式,也就是淺拷貝,該案例執行最終會異常。

#include

"test.h"

#define _crt_secure_no_warnings

#include

using

namespace std;

class

teacher

//析構構造

~teacher()

}};void

test()

intmain()

**執行記憶體圖

c 學習筆記之深拷貝與淺拷貝

淺拷貝 簡單的賦值拷貝操作 深拷貝在堆區重新申請空間,進行拷貝操作 淺拷貝帶來的問題在於堆區記憶體的重複釋放 初始化列表 作用 c 提供初始化列表的語法,用來初始化屬性 建構函式 屬性 值 屬性 值2 當其他類物件作為本類成員,建構函式先構造類物件,再構造自身 析構順序與構造順序相反 class p...

C 之深拷貝 淺拷貝

關於拷貝的錯誤 對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。以下有乙個學生類 執行結果 呼叫一次建構函式,呼叫兩次析構函式,兩個物件的指標成員所指記憶體相同,這會導致什麼問題呢?name指標被分配一次記憶體,但是程式結...

C 之深拷貝 淺拷貝

什麼是拷貝建構函式?通過拷貝物件的方式建立乙個新的物件,拷貝建構函式的引數必須是類物件的引用,也就是將乙個物件拷貝給另乙個新建的物件 用途,在建立物件的時候,使用同一類之前建立的物件來初始化新建立的物件 book book b 必須是引用的原因是,如果是傳值方式將實參傳遞給形參,中間要經歷乙個物件的...