Sintassi della dichiarazione di funzione
Le funzioni possono essere globali o membri di una classe o della struttura.Vengono dichiarati utilizzando la seguente sequenza:
[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] declarator [cv-qualifer]
[exception-spec]
[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] [*|&] [ms-modifer] identifier
( argument-list ) [cv-qualifer] [exception-spec]
L'identificatore di dichiarazione.vedere identificatori.
All'interno di una classe, un facoltativo friend identificatore.
Un identificatore facoltativo della classe di archiviazione.Per le funzioni globali, gli identificatori validi di classe di archiviazione sono statico e extern.Per funzioni membro di classe, esterno non è consentito.
un identificatore facoltativo di funzione.Per le funzioni globali, unico identificatore valido di funzione è inline. Per funzioni membro di classe, virtuale e inline sono disponibili per e, for costruttori, esplicito.
Un identificatore del tipo che indica il tipo restituito (soggetti a modifiche a un puntatore o un tipo di riferimento mediante l'utilizzo di * o &).
il dichiaratore.
puntatore facoltativo o operatori di riferimento che modificano il tipo restituito
Un modificatore specifico facoltativo Microsoft che specifica la convenzione di chiamata.vedere Modificatori specifici Microsoft.
Nome della funzione.Se la funzione è un membro di una classe o della struttura, il nome può essere qualificato mediante l'operatore di risoluzione dell'ambito.
L'elenco della dichiarazione dell'argomento racchiuso tra parentesi ().
un const facoltativo o un qualificatore volatile.in questo contesto, const può essere utilizzato solo per i membri della classe e viene utilizzato per indicare che la funzione non modifica i membri dati della classe.
Se il tipo restituito è un puntatore a funzione, la sintassi del dichiaratore può risultare più complessa, come illustrato di seguito.
- Un'indicazione facoltativa della specifica di eccezione che eccezioni la funzione genera.vedere specifiche di eccezione.
Il tipo dell'identificatore in modo da dichiarato è possibile creare i seguenti: const o (se specificato) funzione volatili, con l'elenco di argomenti specificato, restituisce il tipo indicato dall'identificatore di dichiarazione.
Nell'esempio seguente vengono illustrate due dichiarazioni di funzioni semplici:
char *strchr( char *dest, char *src );
static int atoi( const char *ascnum ) const;
Dichiarare le funzioni che restituiscono puntatori a funzioni
È consigliabile che typedef essere utilizzato per dichiarare un alias per il tipo di puntatore a funzione se la dichiarazione di una funzione che restituisce un tipo puntatore a funzione.Esempio:
typedef int (*fp)(int);
fp myFunction(char* s); // function returning function pointer
Se questa operazione non viene eseguita, la corretta sintassi per la dichiarazione di funzione può essere dedotta dalla sintassi del dichiaratore per il puntatore a funzione sostituendo l'identificatore (fp nell'esempio precedente) con il nome e l'elenco di argomenti di funzioni, come segue:
int (*myFunction(char* s))(int);
La dichiarazione precedente equivale alla dichiarazione utilizzando il typedef precedente.