Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Polymorphie mit eigenen Frames: TabOrder nicht gefunden

  Alt 21. Jan 2004, 14:26
Das implementieren eines Interfaces (IMyInterface) kann man in C++ tatsächlich mit dem Merfacherben einer puren abstrakten Klasse (IMyInterface) vergleichen, allerdings wäre diese pure abstrakte Klasse wiederum von der abstrakten Klasse IInterface abgeleitet, die drei abstrakte Methoden (_AddRef, _Release und QueryInterface) einführt und den Zuweisungsoperator operator = () in der Form überlädt, dass eine Zuweisung eines Objekts (!=null eq <>nil) die vom Erben zu implementiernde Methode _AddRef aufruft und das aufheben einer Referenz (bzw Zuweisen von nil) die vom Erben zu implementiernde Methode _Release aufruft (Referenzzählung).
Der Compiler sorgt darüber hinaus dafür, dass diese "Zuweisung mit nil" (durch Try..Finally geschützt) auch beim Verlassen des Gültigkeitbereichs durchgeführt wird, ähnlich dem C++ Konzept der SmartPointer (tatsächlich gibt es mit TInterfacedObject bereits ein Objekt, dass sich "selbst freigibt").

Suche einfach mal im Forum nach Interface etc, hier wurden oft schon gute Erklärungen für Einsteiger verfasst.

Eine kleine Anmerkung zur beschriebenen Lösung mit TMyFrame (s.o.): Die Klasse TComponent implementiert bereits die von IInterface (bei Deinem D5 heißt es IUnknown) geforderten Methoden und führt zur Referenzzählung (im Normalfall) eine Dummyoperation aus.
gruß, choose
  Mit Zitat antworten Zitat