デストラクタ
デストラクタ(英: destructor)は、オブジェクト指向プログラミング言語でオブジェクトを削除する際に呼び出されて後処理などを行なう関数あるいはメソッドのこと。C++やDelphiにおいてサポートされている。デストラクタは確実かつ安全なリソース管理を実現するための重要な役割を担う。
日本語では「解体子」という直訳が割り当てられることもあるが、ほとんど使用されることはない。
なお、本項では類似概念であるファイナライザについても合わせて述べる。
ファイナライザ (finalizer) は、ガベージコレクタを持つ言語において不要オブジェクトが回収される前に自動的に呼び出されるメソッドである。
Java、Rubyなどに存在する。C++/CLIにはデストラクタとファイナライザの両方が存在する。C#にはファイナライザのみが存在するが、構文がC++のデストラクタに酷似しており、かつては「デストラクタ」と呼ばれていた。
デストラクタと違い、ファイナライザはオブジェクトが不要になってもすぐには呼ばれるとは限らない。不要になってから実際に回収されるまでの間に、いつか呼ばれるというだけである。それは不要になった直後かもしれないし、遙か後になるかもしれない。さらにはメモリに十分な余裕があれば、オブジェクトが回収されずファイナライザが永遠に呼ばれないということさえありうる。
このようにいつ呼び出されるかわからない、呼ばれるかどうかすらわからないメソッドのため、確実に実行されなければならないような処理は一般的にファイナライザに任せることはできない。