Was bedeutet es, einen Parameter des Funktionstyps in C ++ zu übergeben?

8

Vor einiger Zeit habe ich festgestellt, dass es möglich ist, eine C ++ - Funktion zu schreiben, die einen Parameter vom Funktionstyp ( nicht Funktionszeigertyp!) akzeptiert. Zum Beispiel ist hier eine Funktion, die eine Callback-Funktion übernimmt, die ein Double akzeptiert und zurückgibt:

%Vor%

Meine Frage ist, was es bedeutet, eine Variable vom Funktionstyp zu haben, da man sie in keinem anderen Kontext deklarieren kann. Wie unterscheidet es sich semantisch von einem Funktionszeiger oder einer Referenz auf eine Funktion? Gibt es einen wichtigen Unterschied zwischen Funktionszeigern und Variablen des Funktionstyps, auf die ich achten sollte?

    
templatetypedef 18.03.2011, 19:07
quelle

1 Antwort

13

Genau wie void f(int x[]) ist das gleiche wie void f(int* x) , die folgenden beiden sind identisch:

%Vor%

Oder in der Amtssprache (C ++ 03 8.3.5 / 3), wenn der Typ einer Funktion bestimmt wird,

  

Nachdem der Typ jedes Parameters bestimmt wurde, wird jeder Parameter vom Typ "Array von T " oder "Funktion, die T zurückgibt" als "Zeiger auf T " oder "Zeiger auf Funktion wird zurückgenommen T , "jeweils.

    
James McNellis 18.03.2011, 19:13
quelle

Tags und Links