System.TInterfacedObject
Delphi
TInterfacedObject = class(TObject, IInterface)
C++
class PASCALIMPLEMENTATION TInterfacedObject : public TObject
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
class | public | System.pas systobj.h |
System | System |
Description
TInterfacedObject est une base pour les classes simples qui ont besoin d'une implémentation IInterface de base.
TInterfacedObject est une classe de base adaptée aux threads pour les classes Delphi supportant des interfaces. TInterfacedObject fournit la fonctionnalité de base de comptage de références rendant les classes dérivées utiles à la fois dans le code Delphi et dans le code C++.
Remarque : Dans Delphi, les variables déclarées de type TInterfacedObject bénéficient de la liaison dynamique, c'est-à-dire qu'une instance d'une classe descendante peut, à l'exécution, être affectée à cette variable. En effet, TInterfacedObject implémente QueryInterface, qui est appelée lors de l'exécution pour demander si l'objet instancié gère l'interface demandée. Si c'est le cas, l'objet descendant est affecté à la variable. Sans le support de QueryInterface, une telle assignation produirait une erreur à la compilation.
Dans Delphi, un descendant de TInterfacedObject n'a pas de fabricant de classes ni de CLSID. Cela signifie qu'il ne peut être instancié qu'en appelant un constructeur.
TInterfacedObject n’implémente pas les méthodes de la version C++ de IUnknown ou de IInterface. Ce n'est pas un problème lors de l'utilisation d'enveloppes C++ pour les descendants de TInterfacedObject écrits en Delphi. Toutefois, si vous créez des descendants C++ de TInterfacedObject, vous devez fournir votre propre implémentation de IUnknown. Pour des détails sur la manière de procéder, voir Création de classes gérant IUnknown (fournies uniquement avec les produits C++).