五、深拷貝與淺拷貝
1、淺拷貝:對基本型別資料以及簡單的物件直接複製記憶體的拷貝。但是,當類的成員包含指標的時候,使用淺拷貝是將拷貝物件的位址賦值給了新的物件,導致兩個指標指向了同一塊記憶體空間,這時候淺拷貝就不能滿足實際要求了,需使用深拷貝。
示例: test (const test &other)
m_id = other.m_id;
m.name = other.m_name;
2、深拷貝:當類持有其它資源(如動態分配的記憶體、指向其他資料的指標等)時使用的拷貝。此時預設的拷貝建構函式不能拷貝這些資源,我們必須顯式地定義拷貝建構函式,以完整地拷貝物件的所有資料。
注:對於簡單的類,預設的拷貝建構函式一般就夠用了,我們也沒有必要再顯式地定義乙個功能類似的拷貝建構函式。
示例: test (const test &other)
m_id = other.m_id;
m_name = new char[100];
strcpy_s(m_name,
strlen(other.m_name). other.m_name);
六、移動建構函式
1、移動拷貝建構函式:test (const test && other){}
2、移動賦值運算子:test & operator=( test && other){}
注:①形參為物件,若不用引用作形參而使用拷貝,操作耗時、開銷大。
②&左值引用,&&右值引用,使用std::move()可將左值轉為右值。
③若沒有宣告,系統會自動生成預設的移動建構函式。
3、引入右值引用的目的:提高程式執行效率、把拷貝物件變成移動物件,省去呼叫拷貝建構函式,拷貝賦值建構函式,省去開闢空間過程;
嵌入式物件導向程式開發(1)
d2.26 嵌入式物件導向程式設計 嵌入式linuxc 開發 學習內容 c c with class 95 c中學過的資料型別 基本控制語句 函式 關鍵字 位運算 指標 陣列 1 c到c 公升級 語法公升級 2 c 物件導向的三大特點 封裝 繼承 多型 3 c 模板 4 c 異常處理 5 c 檔案處...
嵌入式物件導向程式開發 C 模板
概述模板是一種引數化的多型工具。所謂引數化的多型性,是指將程式所處理的物件的型別引數化,使一段程式 可以用於處理多不同型別的物件。採用模板程式設計,可以為各種邏輯功能相同而資料型別不同的程式提供一種 共享的機制。1 函式模板 1 一般說明形式 template 模板形參表 返回值型別函式名 模板函式...
嵌入式物件導向程式開發 深拷貝與淺拷貝
1 淺拷貝 對基本型別資料以及簡單的物件直接複製記憶體的拷貝。但是,當類的成員包含指標的時候,使用淺拷貝是將拷貝物件的位址賦值給了新的物件,導致兩個指標指向了同一塊記憶體空間,這時候淺拷貝就不能滿足實際要求了,需使用深拷貝。示例 test const test other 2 深拷貝 當類持有其它資...