TInterfacedObject

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation des interfaces


Lors de la définition d'une classe qui prend en charge une ou plusieurs interfaces, il est commode d'utiliser TInterfacedObject comme classe de base, car elle implémente les méthodes de IInterface. La classe TInterfacedObject est déclarée de la manière suivante dans l'unité System :

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;

Dériver directement de TInterfacedObject est trivial. Dans l'exemple de déclaration suivant, TDerived est un descendant direct de TInterfacedObject qui implémente une interface hypothétique IPaint.

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

Comme TInterfacedObject implémente les méthodes de IInterface, elle gère automatiquement le comptage de références et la gestion mémoire pour les objets interfacés. Pour davantage d'informations, voir Gestion mémoire des objets interface, qui traite également de l'écriture de classes implémentant des interfaces sans utiliser le mécanisme de comptage de références inhérent à TInterfacedObject.

Voir aussi