Dichiarazioni
Le dichiarazioni introducono nuovi nomi in un programma. Gli argomenti trattati in questa sezione includono i seguenti usi delle dichiarazioni.
Specificare la classe di archiviazione, il tipo e il collegamento per un oggetto o una funzione.
Dichiarare una funzione come inline o virtual.
Associare un nome a una costante (dichiarazione di enumerazione).
Dichiarare un nuovo tipo (dichiarazione class, struct o union).
Specificare un sinonimo per un tipo (dichiarazione typedef).
Specificare uno spazio dei nomi.
Dichiarare un tipo da usare come sinonimo con un alias.
Oltre a introdurre un nuovo nome, una dichiarazione consente di specificare che modo un identificatore deve essere interpretato dal compilatore. Le dichiarazioni non riservano automaticamente le risorse di archiviazione associate all'identificatore. Le definizioni riservano le risorse di archiviazione.
Nota
Molte delle dichiarazioni sono anche definizioni.Le dichiarazioni che non sono definizioni includono dichiarazioni di classe senza l'elenco dei membri e le dichiarazioni di funzioni senza il corpo della funzione.
Una dichiarazione può essere di:
[ decl-specifiers ] [ declarator-list ] ;
function-definition
linkage-specification
template-specification
modelli di alias
explicit-template-instantiation
explicit-template-specialization
namespace-definition
namespace-alias-definition
alias-declaration
using-declaration
using-directive
asm-definition
Il componente decl-specifiers di una dichiarazione viene mostrato come facoltativo; è tuttavia possibile ometterlo solo nelle dichiarazioni di tipi di classe o nelle enumerazioni.
I dichiaratori nel componente declarator-list contengono i nomi dichiarati. Benché il componente declarator-list sia mostrato come facoltativo, può essere omesso solo nelle dichiarazioni o nelle definizioni di una funzione.
Nota
La dichiarazione di una funzione è spesso chiamata prototipo.Un prototipo fornisce informazioni sul tipo riguardo gli argomenti e il tipo restituito della funzione.In aggiunta, un prototipo consente al compilatore di eseguire le conversioni corrette e contribuisce a garantire la sicurezza del tipo.
Un nome viene considerato dichiarato immediatamente dopo il proprio dichiaratore e prima del proprio inizializzatore (quest'ultimo è facoltativo). Per altre informazioni, vedere Punto di dichiarazione.
Le dichiarazioni avvengono in un ambito. L'ambito controlla la visibilità del nome dichiarato e la durata dell'oggetto definito, se presente. Per altre informazioni su come le regole di ambito interagiscono con le dichiarazioni, vedere Ambito.
Una dichiarazione dell'oggetto è anche una definizione, a meno che contenga l'identificatore di classi di archiviazione extern descritto in Identificatori di classi di archiviazione. Una dichiarazione di funzione è anche una definizione, a meno che non sia un prototipo. Un prototipo è un'intestazione di funzione senza un corpo di funzione di definizione. La definizione di un oggetto causa l'allocazione delle risorse di archiviazione e le inizializzazioni appropriate per tale oggetto.
Argomenti correlati
Per informazioni su function-definition, vedere Definizioni di funzioni C++.
Per informazioni su linkage-specification, vedere Specifiche dei collegamenti.
Per informazioni su template-specification, explicit-template-instantiation e explicit-template-specialization, vedere Modelli.
Per informazioni su namespace-definition e namespace-alias-definition, vedere Spazi dei nomi (C++).
Per informazioni su asm-definition, vedere __asm.