デストラクター
読み:デストラクター
外語:destructor
オブジェクト指向プログラミング言語において、あるオブジェクトが解放(破棄)される際に実行される処理やメンバー関数のこと。ディストラクタとも。
概要
デストラクターは、そのオブジェクトが解放される時に呼び出される関数またはメソッドである。
そのオブジェクトの有効範囲が終わったり、プログラム自体が終了した際に、呼び出されることになる。
この機能は、C++等に存在するが、C++/CLIやJavaにはない。C++/CLIやJavaには代わりにガベージコレクション時に呼び出されるファイナライザーというものがあり、目的は基本的に同様である。
特徴
基本
デストラクター内で行なう処理は任意だが、経験則により、解決困難なバグの混入を防ぐためクラス外に影響を及ぼすような処理(グローバル変数へのアクセスなど)は避けるべきだとされている。
一般的にはコンストラクターで確保したメモリーの解放確保や初期化など、そのクラスを利用するために実行したことの整理、後始末をするのに用いられる。
デストラクターは、必要がなければ作る必要はない。その場合でも、コンパイラーが自動的にデフォルトデストラクターを挿入し、適切な処理をするが、そこでコンパイラーが何をしているかをプログラマーが意識する必要はない。
C++
C++では、デストラクターの関数名は、クラス名の頭に~を付けたものとする。例えばクラス名がCTestであるなら、classの定義にて~CTest();などを宣言し、CTest::~CTest()として処理を記述することになる。
C++において特に重要なことは、デストラクター内で不用意に例外を起こしてはならない事が挙げられる。資源の開放忘れやメモリーリークを引き起こし、結果として解決困難なバグに悩まされることになる。
例外が起きそうな箇所には必ずtry〜catchで蓋をして、そこから外に例外が飛び出さないように気をつける必要がある。
再検索