Funktionsobjekte <> Funktionszeiger
-
http://www.cpp-tutor.de/cpp/le13/le13_01.htm
Hi!
In oben genannter HTML-Seite steht:
Funktionsobjekte sind Objekte die den Operator (...) (also den Aufrufoperator) überladen. Sie sind das C++ Gegenstück zu Funktionszeiger, aber viel mächtiger.
Kann mir das mal jemand näher erklären? Ich kann zwischen einem Funktionszeiger und dem Operator() keinen zusammenhang erkennen.
mfg
-
ok. du hast einen funktionszeiger:
void foo(){...}//die funktion void (*pt2Function)();//der funktionszieger pt2Function=&foo;//die funktion an den funktionszeiger übergeben pt2Function();//funktionsaufruf
nun der functor
class Functor{ private: typedef void (*FP)();//geht auch als typedef FP zeiger; public: Functor(FP Zeiger):zeiger(Zeiger){} void operator()(){ FP(); } }; //benutzung void foo(){...}//die funktion Functor F(&foo); F();//benutzen den op() und damit die benutzung der funktion foo
zwischen dem aufurf von F() und pt2Function() ist vom optischen kein unterschied.