Funktor vs. Funktion mit static Elementen



  • Da ich grade hier zum ersen mal von Funktoren gelesen habe, habe ich gleich mal gegoogelt und gelesen was das denn wohl ist.
    Funktion ist soweit klar: Ein Objekt einer Klasse kann durch überladen des Operator() wie eine Funktion aufgerufen werden.
    Nur: Was soll das? Ich habe gelesen, das seien dann Funktionen mit Zustand, aber das erreiche ich auch durch ein static int state; oder so. Ich meine: Kann mir mal einer einen Anwendungsfall für Funktoren schildern?

    Danke!

    Peanut



  • C a(1,2,3); // 1.
    a = C(1,2,3); // 2.



  • what 😕



  • Was soll das? Ich habe gelesen, das seien dann Funktionen mit Zustand, aber das erreiche ich auch durch ein static int state; oder so.

    Mit dem Unterschied, dass du hier eine ganz andere Granularität hast.
    Die statischen Variablen innerhalb einer Funktionen können in einem Programm zu einem beliebigen Zeitpunkt immer nur *genau eine* Belegung haben. Alle Aufrufer müssen sich also ein Gedächtnis teilen.
    Funktionsobjekte hingegen haben alle ihren eigenen Kontext/Speicher.
    Da du beliebig viele Objekte anlegen kannst, kannst du demzufolge auch beliebige viele Zustände haben.

    Kann mir mal einer einen Anwendungsfall für Funktoren schildern?

    Ein gutes konkretes Beispiel für den Einsatz von Funktionsobjekten stellt die C++ Standardbibliothek dar. Dort findest du sie, meist als Prädikate, im Zusammenhang mit Algorithmen und den assoziativen Containern.

    Ein allgemeineres Beispiel ist das Command Pattern:
    http://c2.com/cgi/wiki?CommandPattern


Anmelden zum Antworten