析構函式的用法 簡單理論講解

2022-01-15 22:35:39 字數 606 閱讀 8036

析構函式是「反向」的建構函式。它們在物件被撤消(**)時呼叫。析構函式的名 稱除了最前面的「~」符號外,與類的名稱相同。例如,類string的析構函式是~string()。 析構函式通常用於當乙個物件不再需要時,完成「消除」功能。

在函式中建立物件之後,這個物件作為區域性物件開始生存,直到函式執行到遇見右括號「}」才結束生存,此時呼叫析構函式。 

物件的釋放發生在以下幾種情況,首發自學程式設計網: 

·使用運算子new分配的物件被delete刪除。 

·乙個具有塊作用域的本地(自動)物件超出其作用域。 

·臨時物件的生存期結束。 

·程式結束執行。 

·使用完全限定名顯示呼叫物件的析構函式。 

有幾條規則約束著析構函式的說明: 

·不能接受參量。 

·  不能說明有任何返回型別(包括void)。 

·不能用return語句返回值。 

· 不能說明為const、volatile或static,但析構函式可以因說明為const、volatile或static的物件的析構而被呼叫。 

·可以說明為虛擬的。使用虛析構函式,可以撤消物件而不必知道該物件的型別。由於使用虛函式機制,程式將呼叫該物件的正確的析構函式。

虛析構函式的作用和用法

我們已經介紹過析構函式 詳情請檢視 c 析構函式 它的作用是在物件撤銷之前做必要的 清理現場 的工作。當派生類的物件從記憶體中撤銷時一般先呼叫派生類的析構函式,然後再呼叫基類的析構函式。但是,如果用new運算子建立了臨時物件,若基類中有析構函式,並且定義了乙個指向該基類的指標變數。在程式用帶指標引數...

對C 析構函式的簡單理解

被同學問到這樣乙個問題 下面這段程式執行的時候,沒有執行析構函式?class test int main 問題出在system pause 這裡。在c 中如果定義了物件,並且物件中定義了變數等,那麼程式執行的時候就會給它分配記憶體,如果不手動銷毀的話,物件會一直存在的,這些記憶體會一直被占用,這是乙...

析構函式的奧秘

class b class c public b private a a int main int argc,char argv 類c從類b中繼承出來,類c中聚合了乙個類a的物件,類c的析構函式並未呼叫類a的析構函式,請問 這段 執行後,會呼叫類a的析構函式釋放記憶體嗎?經測試,執行結果如下 con...