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

2021-10-08 06:28:45 字數 664 閱讀 5124

淺拷貝

簡單的賦值拷貝操作

深拷貝在堆區重新申請空間,進行拷貝操作

淺拷貝帶來的問題在於堆區記憶體的重複釋放

初始化列表

作用: c++提供初始化列表的語法,用來初始化屬性

建構函式 (

):屬性 (值)

.屬性(值2)...

.

當其他類物件作為本類成員,建構函式先構造類物件,再構造自身

析構順序與構造順序相反

class

person

//有參建構函式

person

(int age ,

int height)

//拷貝建構函式

person

(const person& p)

//析構函式

~person()

}public

:int m_age;

int* m_height;};

void

test01()

intmain()

總結:如果成員屬性有堆區開闢的,一定要自己提供拷貝建構函式,防止淺拷貝帶來的問題

C 之淺拷貝與深拷貝

當我們對類或者結構體進行賦值操作的時候,會呼叫拷貝建構函式,這時會涉及到淺拷貝和深拷貝的問題。一 淺拷貝 所謂淺拷貝就是對資料成員進行簡單的一一拷貝,因此,對於指標變數也只是拷貝了指標本身,當拷貝完成之後,兩個指標會指向同一塊記憶體,所以當呼叫兩次析構函式的時候,該記憶體會被釋放兩次,從而造成指標懸...

C 學習 深拷貝與淺拷貝

c 中在類中預設的拷貝函式 系統自動生成的 這就是淺拷貝。只是簡單的將成員內容複製。例如下面的 include include using namespace std class array array const array arr arrat using namespace std int ma...

深拷貝與淺拷貝(筆記)

資料型別分為基本資料型別和引用資料型別,深拷貝和淺拷貝的概念也是針對引用資料型別的 引用資料型別在棧中儲存了指標 位址 該指標指向了堆中資料的 起始 位址,當直譯器尋找值時,會首先從棧中通過指標獲取位址,根據位址在堆中找到資料實體 而淺拷貝顧名思義,當我們對乙個引用資料型別進行拷貝使用的時候,拷貝的...