System.TInterfacedObject

提供: Appmethod Libraries
移動先: 案内検索

System.TObjectTInterfacedObject

Object Pascal

TInterfacedObject = class(TObject, IInterface)

C++

class PASCALIMPLEMENTATION TInterfacedObject : public TObject

プロパティ

種類 可視性 ソース ユニット
class public
System.pas
systobj.h
System System


説明

TInterfacedObject は、基本 IInterface 実装を必要とするシンプルなクラスの基底クラスとなります。

TInterfacedObject は、インターフェイスをサポートする Object Pascal クラスのための、スレッドセーフな基底クラスです。TInterfacedObject は、Object Pascal および C++ コード双方において、子孫クラスが便利に使用できる、基本的な参照カウント機能を提供します。

メモ: Object Pascal では、TInterfacedObject 型として宣言された変数は動的バインディングされます。つまり、子孫クラスのインスタンスは、その変数に対して、実行時に割り当てられることが可能になります。これは、TInterfacedObjectQueryInterface を実装しているためで、QueryInterface は、インスタンス化されたオブジェクトが要求されているインターフェイスをサポートしているかどうか判断するために、実行時に呼び出されます。サポートしている場合、その子孫オブジェクトは変数に対して正常に割り当てられます。QueryInterface によるフォローがないと、このような割り当てはコンパイル時のエラーを起こします。

Object Pascal では、TInterfacedObject の子孫は、クラス ファクトリもしくは CLSID を持っていません。このため、コンストラクタを呼び出す以外にインスタンス化されることはありません。

TInterfacedObject は、IUnknownIInterface の C++ 版のメソッドを実装していません。Object Pascal で記述された TInterfacedObject の子孫のための C++ ラッパを使用している場合には、問題ありません。しかし、TInterfacedObject の C++ の子孫を作成している場合には、IUnknown の独自の実装を提供する必要が出てきます。この具体的な方法については、「IUnknown をサポートするクラスを作成する」(C++ 製品でのみ提供)を参照してください。

関連項目