析構函式也是一種特殊的成員函式,它執行與建構函式相反的操作。建構函式用於為類的物件分配空間,析構函式用於撤銷物件時的一些清理任務,如釋放分配給物件的記憶體空間。
類內部:~類名(){}
類外部:類名::~類名
(){}
需要在類內部宣告
1、析構函式與建構函式名字相同,但它前面必須加波浪號(~)。2、析構函式既可以在類內部定義,也可以在類外部定義。
3、析構函式沒有引數,沒有返回值,不能過載。也就是說,乙個類中只能有乙個析構函式,原因是不能釋放同一塊記憶體空間兩次。
4、當撤銷物件時,系統會自動呼叫析構函式,無需呼叫。
5、具有static屬性的物件和全域性物件只在
main
函式結束時,其生存週期才結束,這時才呼叫析構函式。
6、析構函式的作用並不是刪除物件。
7、若乙個物件是使用new運算子動態建立的,在使用
delete1
運算子釋放它時,
delete
會自動呼叫析構函式。
8、若沒有定義析構函式,系統會自動生成乙個析構函式,這個析構函式不做任何事情。
C 析構函式 虛析構函式
1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...
建構函式 析構函式 虛析構函式
說析構函式之前,先說下建構函式。建構函式用來完成對物件的一系列初始化操作,主要作用有 1.給建立的物件建立乙個識別符號 2.為物件資料成員開闢記憶體空間 3.完成物件資料成員的初始化 當並未顯示的定義建構函式時,會生成乙個預設的建構函式,預設建構函式不能完成物件資料成員的初始化,只能給物件建立一識別...
C 虛函式 12 純虛析構函式
c 中析構函式能否為純虛函式?可以!c 中定義乙個純虛析構函式是合法的,並且最重要的一點是如果某個類包含純虛析構函式,則類必須給此函式定義函式體。看起來這種現象很奇怪,純虛函式怎麼會需要定義函式體呢?但是,因為析構函式的呼叫順序總是與構造順序相反,這就意味著派生類的析構總是先被呼叫,然後再呼叫基類的...