Definizioni di funzioni C++
Le definizioni di funzione differiscono dalle dichiarazioni di funzione in quanto forniscono i corpi delle funzioni, il codice che costituisce la funzione. La forma di una definizione di funzione è:
decl-specifiers declarator [cv-qualifers] [exception-specification]
{
// function body
}
decl-specifiers declarator [cv-qualifers] =default;
decl-specifiers declarator [cv-qualifers] =delete;
Le parti della definizione sono:
Identificatori di dichiarazione, come descritto in Dichiarazioni di funzioni.
Il dichiaratore (descritto più avanti in questo articolo).
Un qualificatore const facoltativo o volatile. In questo contesto, const può essere utilizzato solo per i membri della classe per indicare che la funzione non modifica i membri dati della classe.
Specifica dell'eccezione in cui vengono descritte le eccezioni che possono essere generate dalla funzione. Vedere Specifiche di eccezioni.
Corpo della funzione costituito da istruzioni racchiuse tra parentesi graffe {}.
=default; nel caso di una definizione impostata in modo esplicito come predefinita.
=delete; nel caso di una definizione eliminata.
Il formato del dichiaratore è:
Puntatore o operatori di riferimento facoltativi che consentono di modificare il tipo restituito.
Modificatore specifico di Microsoft facoltativo. Vedere Modificatori specifici Microsoft.
Nome della funzione. Se la funzione è membro di una classe o di uno struct, è possibile qualificare il nome mediante l'operatore di risoluzione dell'ambito.
Elenco delle dichiarazioni di argomenti racchiuso tra parentesi ().
Per i costruttori, un inizializzatore del costruttore facoltativo (descritto più avanti in questo articolo).
Per informazioni sul formato del dichiaratore in questi casi, vedere i commenti in Dichiarazioni di funzioni sulle funzioni che restituiscono puntatori a funzione.
Gli argomenti formali dichiarati nell'elenco delle dichiarazioni di argomenti sono inclusi nell'ambito del corpo della funzione.
Nella figura seguente vengono illustrate le parti di una definizione di funzione. L'area ombreggiata costituisce il corpo della funzione.
Parti della definizione di una funzione
L'elemento inizializzatore del costruttore della sintassi viene utilizzato solo nei costruttori. Lo scopo di tale elemento inizializzatore è di consentire l'inizializzazione delle classi base e degli oggetti contenuti. Per altre informazioni sull'utilizzo dell'inizializzatore del costruttore, vedere Inizializzazione di classi base e membri.
Una definizione impostata in modo esplicito come predefinita può essere dichiarata solo per una funzione membro speciale. Quando una funzione membro speciale viene impostata in modo esplicito come predefinita, l'implementazione la definisce come se avesse una definizione implicita, tranne per il fatto che potrebbe essere non inline (una funzione membro speciale dichiarata in modo implicito è sempre inline). Per altre informazioni sulle funzioni impostate come predefinite, vedere la sezione di Supporto delle funzionalità C++11 (C++ moderno) relativa alle funzioni impostate come predefinite ed eliminate.
Una definizione eliminata, nota anche come funzione eliminata, è implicitamente inline. Un programma che fa riferimento a una funzione eliminata in modo esplicito o implicito, anziché dichiararla, viene specificato in modo non valido. Per altre informazioni sulle funzioni eliminate, vedere la sezione di Supporto delle funzionalità C++11 (C++ moderno) relativa alle funzioni impostate come predefinite ed eliminate.
Vedere anche
Riferimenti
Concetti
Ricerca del nome dipendente dall'argomento nelle funzioni (Koenig)