Wie man Callbackfunktionen alá onKeyDown() etc. oder Signals alá clicked() mit Slots verwendet ist mir durchaus klar.
Mich beschäftigt nur immerzu die Frage, wie diese drei Funktionstypen implementiert sind.
Callback-Funktionen:
Ich hab das so verstanden, dass diese Funktionen (wenn ich eine Taste drücke etc.) vom Betriebssystem aufgerufen werden, nachdem dieses wie auch immer mitbekommen hat, dass ich etwas gedrückt habe.
Das müsste doch heißen, dass z.B. bei Qt im kompilierten und gelinkten Code eine Referenz auf mein Objekt in so einer Art "Referenz-Liste" steht.
NUR:
Woher weiß das Betriebssystem bzw. das Programm, WELCHES Objekt gemeint ist? Gibt es von JEDEM Objekt im Programm eine Referenz in einer Programm-eigenen Liste? Es gibt doch soetwas wie eine "Programminstanz", die das Betriebssystem sieht, oder? Wird solch eine Funktion in einem Objekt direkt vom Betriebssystem aufgerufen? Oder wird über meine Programm-Instanz über alle Unterobjekte bis zu besagten Objekt vorgedrungen? Wenn ja - woher weiß das Programm / Betriebssytem, WELCHES Objekt aufgerufen werden muss?
Signals+Slots:
Wie kann es sein, dass ich mit einer static-Funktion wie QObject::connect() einzelne Instanzen von Objekten verbinden kann? Werden die Referenzen auf diese Objekte gespeichert? In einer statischen Instanz von QObjekt? Oder wie werden die Verbindungen sonst verwaltet?
Ich hoffe, dass ihr ungefähr versteht, was ich wissen möchte. Es geht hier nicht darum, wie man mit diesen drei Funktionstypen programmiert, sondern wie sie implementiert sind.
Gruß,
euer Miles
Lesezeichen