表示: 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 の直下の派生オブジェクトである TDerivedIPaint インターフェースを実装する宣言の例を示します。

type
  TDerived = class(TInterfacedObject, IPaint)
  .
  .
  .
  end;

このクラスは IInterface のメソッドを実装しているため,TInterfacedObject はインターフェース化オブジェクトの参照カウントとメモリ管理を自動的に処理します。詳細については,「インターフェースオブジェクトのメモリ管理オブジェクト」を参照してください。ここでも,インターフェースを実装し,TInterfacedObject から継承する参照カウント機構にしたがわない,ユーザー独自のクラスの記述について説明しています。

関連項目

他言語版