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.


Anmelden zum Antworten