解構子
外觀
解構子(英語:Destructor,有時簡稱 dtor)在物件導向程式設計裏是一個方法,當對象的生命週期結束時,它會自動地被呼叫執行。它最主要的目的在於,清空並釋放物件先前建立或是佔用的記憶體資源。解構子的整體使用概念關鍵在於RAII。一個具備垃圾回收機制的程式語言,無法確保解構子是否會被執行,通常這類的程式語言不屬於RAII的範圍內。這類的程式語言,只要經由某個適當的函數,通常會呼叫Dispose()
函數,做呼叫的動作,那麼它一定會從現有資源釋放物件。與使用垃圾回收機制的Finalize()
相比,建議使用解構子是釋放資源的適當做法[註 1]。
代碼範例
[編輯]class Demo{
public:
~Demo() //定义析构函数
{
std::cout << "调用了析构函数 " << std::endl;
}
};
int main()
{
{
Demo demo ;
} // 在部分开发环境中可能没有显示内容,把它放在块儿中即可
return 0; //返回之前调用析构函数;
}
執行結果為: 呼叫了解構子
第二種呼叫方式:
class Demo{
public:
~Demo() //定义析构函数
{
std::cout << "调用了析构函数 " << std::endl;
}
};
int main()
{
Demo(); //在Visual Studio 2017中运行。
return 0;
}
執行結果與上方相同
註釋
[編輯]- ^
Finalize()
,Finalize函數,英語:Finalizer
參考資料
[編輯]- 比雅尼·史特勞斯特魯普: The C++ Programming Language, Addison-Wesley, ISBN 0-201-70073-5
相關條目
[編輯]這是一篇關於電腦程式語言的小作品。您可以透過編輯或修訂擴充其內容。 |