淺拷貝
簡單的賦值拷貝操作
深拷貝在堆區重新申請空間,進行拷貝操作
淺拷貝帶來的問題在於堆區記憶體的重複釋放
初始化列表
作用: 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...
深拷貝與淺拷貝(筆記)
資料型別分為基本資料型別和引用資料型別,深拷貝和淺拷貝的概念也是針對引用資料型別的 引用資料型別在棧中儲存了指標 位址 該指標指向了堆中資料的 起始 位址,當直譯器尋找值時,會首先從棧中通過指標獲取位址,根據位址在堆中找到資料實體 而淺拷貝顧名思義,當我們對乙個引用資料型別進行拷貝使用的時候,拷貝的...