オブジェクトを生成時には初期化動作をコーディングしたいものです。そこで登場するのが、コンストラクタ。これはオブジェクトが生成されたときに自動的に呼び出される関数だと捉えてもらえればよいと思います。反対に、デストラクタとはオブジェクトが破棄されるときに呼び出されます。
戻り値なしのメンバ関数のように記述します。関数名は、コンストラクタはクラス名と同じものを、デストラクタはクラス名の前にチルダ "~" をつけたものになります。また、コンストラクタのアクセシビリティは必ずPublicにする必要があります。こちらも注意しておきましょう。アクセシビリティについては、「継承とアクセシビリティ」で説明します。
Class CTest Public 'コンストラクタの定義 Sub CTest() 'オブジェクト生成時の初期処理をコーディング End Sub 'デストラクタの定義 Sub ~CTest() 'オブジェクト破棄時の終了処理をコーディング End Sub End Class
コンストラクタにはパラメータを指定することができますが、デストラクタには指定できないので、注意が必要です。デストラクタは、必ずパラメータ無しの関数でなければなりません。ここまでのことをまとめてみると…
コンストラクタ実際に、サンプルコードを動かし、コンストラクタ、デストラクタの動きを確認してみましょう。
このサンプルでは、CTestクラスを定義し、その中でコンストラクタ、デストラクタを定義します。MainProcはメイン処理を行うための関数として用意してみました。この関数の中でobjというCTestを雛型とするオブジェクトを生成しています。Dimステートメントが実行された時点でコンストラクタが呼ばれ、関数を抜け出す時点でデストラクタが呼び出されることがおわかりいただけるでしょうか?
#N88BASIC '--------------------- ' CTest クラスを定義 '--------------------- Class CTest Public 'コンストラクタの定義 Sub CTest() Print "オブジェクトが生成されました。" End Sub 'デストラクタの定義 Sub ~CTest() Print "オブジェクトが破棄されました。" End Sub End Class Sub MainProc() 'オブジェクトを生成 Dim obj As CTest End Sub Print "今からMainProc関数を呼び出します。" MainProc() Print "MainProc関数が終わりました。"
講座インデックスへ戻る | ©2005 Discoversoft |