In einer Funktionsdeklaration, Argumente vom Typ ARRAY Zerfalls in Zeiger auf das erste Element, Argumente der Funktion Zerfallstyp in einen Funktionszeiger, so würde die Signatur sein:
widget w(gadget(*)(), doodad(*)());
Das heißt, eine Funktion, die nimmt als erstes Argument einen Zeiger auf eine Funktion keine Argumente nehmen und gadget
Rückkehr, die einen Zeiger auf eine Funktion keine Argumente nehmen und Zurückgeben ein doodad
und dass die Funktion selbst liefert ein widget
Es gibt noch mehr als zweites Argument interessant oder verwirrt singen Fällen wie:
// assume 'x' is a variable defined somewhere:
widget w(gadget(x));
Wie konnte , die als Funktionsdeklaration interpretiert werden? Ich meine, x
ist eine Variable, oder? Wenn Sie eine Variable deklarieren, können Sie zusätzliche Klammern hinzufügen, so dass gadget x;
und gadget (x);
beide die gleiche Variable x
deklarieren. Gleiches gilt Argumente funktionieren so über den Code wie eine Deklaration einer Funktion sieht, der ein erstes Argument x
vom Typ namens gadget
und gibt ein widget
...
Verwandte/Betrogene: http://stackoverflow.com/questions/9327505/about-pointers-to-functions-in-function-declarations – jrok