標籤:span div 本地 psi 名稱 bsp code operator strong
“解構函式”是建構函式的反向函數。 在銷毀(釋放)對象時將調用它們。 通過在類名前面放置一個波狀符號 (~) 將函數指定為類的解構函式。
聲明解構函式
解構函式是具有與類相同的名稱但前面是波狀符號 (
~) 的函數
該文法的第一種形式用於在類聲明中聲明或定義的解構函式;第二種形式用於在類聲明的外部定義的解構函式。
多個規則管理解構函式的聲明。 解構函式:
使用建構函式
當下列事件之一發生時,將調用解構函式:
使用 delete 運算子顯式解除配置了使用 new 運算子分配的對象。 使用 delete 運算子解除配置對象時,將為“大多數派生對象”或為屬於完整對象,但不是表示基類的子物件的對象釋放記憶體。 此“大多數派生對象”解除配置一定僅對虛擬解構函式有效。 在類型資訊與實際對象的基礎類型不符的多重繼承情況下,取消分配可能失敗。
具有區塊範圍的本地(自動)對象超出範圍。
臨時對象的生存期結束。
程式結束,並且存在全域或靜態對象。
使用解構函式的完全限定名顯式調用了解構函式。 (有關詳細資料,請參閱顯式解構函式調用。)
樣本
// operator delete[] example#include <iostream> // std::coutstruct MyClass { MyClass() {std::cout <<"MyClass constructed\n";} ~MyClass() {std::cout <<"MyClass destroyed\n";}};int main () { MyClass * pt; pt = new MyClass[3]; delete[] pt; return 0;}
輸出:
myclass constructedmyclass constructedmyclass constructedmyclass destroyedmyclass destroyedmyclass destroyed
【C++筆記】解構函式(destructor)