表示: Delphi
C++
表示設定
TInterfacedObject
提供:RAD Studio
Iinterface のメソッドを実装しているため,1 つまたは複数のインターフェースをサポートするクラスを定義するときは,基本クラスとして,TInterfacedObject を使用すると便利です。次に System ユニット内での TInterfacedObject クラスの宣言を示します。
type
TInterfacedObject = class(TObject, IInterface)
protected
FRefCount: Integer;
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
public
procedure AfterConstruction; override;
procedure BeforeDestruction; override;
class function NewInstance: TObject; override;
property RefCount: Integer read FRefCount;
end;
TInterfacedObject からの直接の派生は簡単にできます。次に,例として TInterfacedObject の直下の派生オブジェクトである TDerived が IPaint インターフェースを実装する宣言の例を示します。
type TDerived = class(TInterfacedObject, IPaint) . . . end;
このクラスは IInterface のメソッドを実装しているため,TInterfacedObject はインターフェース化オブジェクトの参照カウントとメモリ管理を自動的に処理します。詳細については,「インターフェースオブジェクトのメモリ管理オブジェクト」を参照してください。ここでも,インターフェースを実装し,TInterfacedObject から継承する参照カウント機構にしたがわない,ユーザー独自のクラスの記述について説明しています。