IInterface の実装
インターフェイスの使用 への移動
すべてのオブジェクトが TObject から直接的または間接的に派生するのと同様に、すべてのインターフェイスも IInterface インターフェイスから派生します。IInterface では、インターフェイスの動的問い合わせと存続時間管理を提供します。これは IInterface の次の 3 つのメソッドで実現されています。
- QueryInterface -- 指定されたオブジェクトに動的に問い合わせを行って、そのオブジェクトでサポートされているインターフェイスのインターフェイス参照を取得します。
- _AddRef -- QueryInterface の呼び出しが成功するたびにカウントをインクリメントする参照カウント メソッドです。オブジェクトは、参照カウントがゼロ以外の間は、メモリ内に存続する必要があります。
- _Release -- _AddRef と一緒に使用されるメソッドで、オブジェクトが自分自身の存続時間を追跡し、自分自身をいつ削除するのが安全かを判断できるようにします。参照カウンタがゼロになると、オブジェクトはメモリから解放されます。インターフェイスを実装するクラスごとに、IInterface の 3 つのメソッドのほか、それ以外の上位インターフェイスで宣言されているすべてのメソッドと、当該インターフェイス自身で宣言しているすべてのメソッドを実装する必要があります。ただし、クラスで宣言されているインターフェイスのメソッドの実装は継承することができます。
これらのメソッドを自分で実装することにより、参照カウントを無効にして、存続時間管理の別の手段を提供することができます。これは、インターフェイスを参照カウントから切り離すことができる有効な手法です。