boost::function



  • unskilled schrieb:

    Event-Systeme?!

    Wohl eines der wichtigsten Anwendungsgebiete. In vielen GUI-Frameworks wird das Observer-Pattern über Funktionszeiger realisiert. Aber auch im Zusammenhang mit funktionalen STL-Algorithmen finden Funktionszeiger (oder Funktoren) Anwendung. Generell, um Callback-Mechanismen zu implementieren.

    boost::function kann allerdings viel mehr als schlichte Funktionszeiger - besonders in Verbindung mit boost::bind entsteht daraus ein sehr mächtiges Konstrukt.



  • Für so ziemlich alle numerischen Verfahren, zum Beispiel. Nimm etwa eine Newton-Approximation - es wäre ziemlich albern, sie für jede Funktion neu zu schreiben.



  • Noch viel wichtiger für ISO-C++ ist, dass der Virtual Method Table Pointer auf Funktionen in der VMT zeigt.



  • Ad aCTa schrieb:

    Noch viel wichtiger für ISO-C++ ist, dass der Virtual Method Table Pointer auf Funktionen in der VMT zeigt.

    hä?
    was hat der vtable damit zu tun??
    und was hat ISO-C++ mit dem vtable zu tun???



  • > der vtable

    Die VTable, die!

    > damit zu tun

    Diese Tabelle ist i.d.R. beim Compiler als Array aus Funktionszeigern implementiert, also auf die virtuellen Funktionen.
    Der VMT-Ptr. ist in dieser Hinsicht sogar ein Zeiger auf ein Funktionszeiger, dem ersten in der VTable.
    Und das ist bekanntlich auf Compiler-Ebene, also für die Sprachfunktionalität entscheident und hebt die Notwendigkeit von Funktionszeigern hervor.
    Man könnte noch weiter gehen, OOP basiert auch zum Großteil aus Funktionszeigern in seiner C++-Implementierung.



  • Der Compiler kann das machen, wie er will. Der Standard schreibt nicht vor, wie es geschieht, sondern nur die allgemeine Schnitstelle.



  • Es läuft allerdings anyway auf Funktionszeiger hinauf, da die Prozedur-Adressen im RAM nun einmal in Datensegmenten alias Funktionszeiger untergebracht sind. Die Technik erlaubt gar nichts anderes. Mir ist kein Compiler bekannt, der es anders machen würde.



  • Ad aCTa schrieb:

    > der vtable

    Die VTable, die!

    lol
    ja, wenn du meinst.

    n.b.: man kann das geschlecht eines fremdwortes nicht vom geschlecht der übersetzung herleiten.



  • hustbaer schrieb:

    n.b.: man kann das geschlecht eines fremdwortes nicht vom geschlecht der übersetzung herleiten.

    http://www.spiegel.de/kultur/zwiebelfisch/0,1518,348938,00.html



  • volkard schrieb:

    hustbaer schrieb:

    n.b.: man kann das geschlecht eines fremdwortes nicht vom geschlecht der übersetzung herleiten.

    http://www.spiegel.de/kultur/zwiebelfisch/0,1518,348938,00.html

    Was willst du damit sagen?
    Dass "Table" ein Gebäudename ist, und der Herr der das schreibt die deutsche Sprache definiert?
    Blödsinn.


Anmelden zum Antworten