如果建構函式開啟了乙個檔案,最後不需要使用時檔案就要被關閉。析構函式允許類自動完成類似清理工作,不必呼叫其他成員函式。析構函式也是特殊的類成員函式。簡單來說,析構函式與建構函式的作用正好相反,它用來完成物件被刪除前的一些清理工作,也就是專門的掃尾工作。
詳細的時說:
自動呼叫基類部分的析構函式對基類的設計有重要影響。
刪除指向動態分配物件的指標時,需要執行析構函式在釋放物件的記憶體之前清除物件。處理繼承層次中的物件時,指標的靜態型別可能與被刪除物件的動態型別不同,可能會刪除實際指向派生類物件的基類型別指標。
如果刪除基類指標,則需要執行基類析構函式並清除基類的成員,如果物件實際是派生型別的,則沒有定義該行為,要保證執行適當的析構函式,基類中的析構函式必須是析構的。
例如:class a;
class b public a:
則 a* p = new b(), 是可以編譯通過的,但在呼叫析構時需要呼叫b的析構函式,所以a必須定義為虛函式才能正確析構。
意思就是析構函式要與虛函式搭配使用.
C 中虛析構函式作用
我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase virtual clxbase virtual void dosomething class clxderived public clxba...
C 中虛析構函式的作用
我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase virtual clxbase virtual void dosomething class clxderived public clxba...
C 中虛析構函式的作用
收藏 我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase virtual clxbase virtual void dosomething class clxderived public cl...