Callback-function = function pointer?



  • Hallo,
    ich habe eine Frage bzgl. der genauen Terminologie. Ich hatte gerade etwas über "callback"-functions gelesen (auf englisch). So genau weiß ich jedoch immer noch nicht was das ist. Ist das einfach ein anderes Wort für pointer auf Funktionen, die als Übergabe für andere Funktionen verwendet werden? Oder gibt es da mehr Unterschiede?



  • Olaf2017 schrieb:

    etwas über "callback"-functions gelesen (auf englisch).

    Wie war es denn da in C++ definiert?


  • Mod

    Callback ist in erster Linie ein Konzept. Wie die genaue technische Umsetzung aussieht, kann unterschiedlich sein.

    Callback meint, dass man an ein System ein aufrufbares Ding übergibt, dass dieses System bei Bedarf aufrufen soll.

    Ein typisches Beispiel wäre zum Beispiel eine grafische Benutzeroberfläche, wo man an das System, das diese Oberfläche betreibt, eine Funktion gibt, die aufgerufen werden soll, wenn der Benutzer einen bestimmten Knopf drückt. Das System merkt sich diese Funktion und wenn der Benutzer den Knopf drückt, dann ruft es die Funktion auf.



  • SeppJ schrieb:

    Callback meint, dass man an ein System ein aufrufbares Ding übergibt, dass dieses System bei Bedarf aufrufen soll.

    Und was ist da der Unterschied zu einen übergebenen Funktions-pointer?

    (hatte es da gelesen: http://stackoverflow.com/questions/2298242/callback-functions-in-c )



  • Olaf2017 schrieb:

    SeppJ schrieb:

    Callback meint, dass man an ein System ein aufrufbares Ding übergibt, dass dieses System bei Bedarf aufrufen soll.

    Und was ist da der Unterschied zu einen übergebenen Funktions-pointer?

    Ein Funktionspointer ist ein Spezialfall eines "aufrufbaren Dings", wie SeppJ es schön schrieb.

    Du könntest auch z.B. ein Lambda, eine std::function oder ein Objekt mit implementiertem operator() als Callback haben. Einfach irgendwas, das man aufrufen kann. Das muss nicht ein Funktionspointer sein.


  • Mod

    Was übrigens groß erklärt wird in dem Link, den du selber angegeben hast. 😕



  • SeppJ schrieb:

    Was übrigens groß erklärt wird in dem Link, den du selber angegeben hast. 😕

    So ganz nicht. Ich war davon ausgegangen, dass lambda Funktionen auch einfach nur ein Funktionspointer ist, nur halt mit andere Definition.

    Ich habs jetzt denk aber kapiert.


Log in to reply