第一層是系統認識的變數,比如int,int*
這些變數系統會在生存週期結束後自動釋放的,當然,你也可以手動地將其釋放
第二層是指標指向的動態分配的空間,需要呼叫delete函式來釋放
類裡面定義的也無外乎這兩種
為何要寫析構函式?而且一般定義成 virtual 型別?
你沒法去訪問類的priviate成員,而且其他使用該類的人也不清楚該如何釋放,因此,你需要寫析構函式,將你這個類所以第二層的變數空間清除乾淨。
另外,由於別人有可能需要在你的類基礎上進行定義一些東西,對你的程式進行改進。這時候,在主程式各個函式的inte***ce是你定義的基類,delete也是呼叫你基類的析構函式,這時別人就無法析構自己定義的東西了,所以,你需要把你的析構函式定義成virtual的,這樣別人的類會有乙個析構函式表,首先呼叫自己的析構函式,然後呼叫你的,這樣就可以完全析構掉了
在c++裡面,任何的指標在delete時候都會呼叫析構函式,這也就是為什麼析構函式必須寫成virtual,防止memory leak
在函式中的指標有可能是基類型別的,這樣造成的結果就是你析構的時候只析構了基類的成員,而派生類中新定義的成員並未析構,這樣就memory leak了,所以需要重新定義析構函式
C 析構函式,This指標,函式鏈
include using namespace std class a public a par new int 20 開闢對空間 for int i 0 i 20 i 初始化堆 par i i cout hello n a int a par new int 20 for int i 0 i 20...
C 析構函式 虛析構函式
1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...
建構函式 析構函式 虛析構函式
說析構函式之前,先說下建構函式。建構函式用來完成對物件的一系列初始化操作,主要作用有 1.給建立的物件建立乙個識別符號 2.為物件資料成員開闢記憶體空間 3.完成物件資料成員的初始化 當並未顯示的定義建構函式時,會生成乙個預設的建構函式,預設建構函式不能完成物件資料成員的初始化,只能給物件建立一識別...