Avatar ·

Was sind Funktoren in C++ und wofür werden sie benötigt?

Hallo Kollegen! Ich habe angefangen, C++ zu lernen und bin auf den Begriff "Funktor" gestoßen. Ich habe die Dokumentation gelesen, aber nicht ganz verstanden. Anscheinend ist es ein Objekt einer Klasse, das sich wie eine Funktion verhält. Aber wozu braucht man so etwas? Wir haben doch normale Funktionen, Lambdas und Funktionszeiger. Ich habe versucht, ein einfaches Beispiel zu schreiben, bin mir aber nicht sicher, ob das die richtige Verwendung ist. Hier ist, was ich habe: ```cpp #include class Adder { public: int operator()(int a, int b) { return a + b; } }; int main() { Adder add; std::cout << add(3, 4) << std::endl; // Gibt 7 aus return 0; } ``` Ich verstehe, dass das funktioniert, aber was ist das besser als eine normale Funktion `int add(int a, int b)`? Warum eine ganze Klasse bauen? Ich habe gehört, dass Funktoren in der STL verwendet werden, zum Beispiel in Algorithmen. Aber mir ist nicht klar, wie genau und in welchen Situationen sie einen Vorteil bieten. Könnt ihr mir "mit einfachen Worten" erklären: Was sind Funktoren, welche Vorteile haben sie im Vergleich zu normalen Funktionen und Funktionszeigern?