Déclarations
Les déclarations introduisent de nouveaux noms dans un programme. Les rubriques abordées dans cette section incluent les utilisations de déclarations suivantes.
Spécifier la classe de stockage, le type et la liaison pour un objet ou une fonction.
Déclarer une fonction en tant que inline ou virtual.
Associer un nom à une constante (déclaration d'énumération).
Déclarer un nouveau type (déclaration de class, struct ou union).
Spécifier un synonyme pour un type (déclaration typedef).
Spécifier un espace de noms.
Déclarer un type à utiliser comme synonyme avec un alias.
En plus d'introduire d'un nouveau nom, une déclaration spécifie la façon dont l'identificateur doit être interprété par le compilateur. Les déclarations ne réservent pas automatiquement le stockage associé à l'identificateur. Les définitions réservent le stockage.
Notes
La plupart des déclarations sont également des définitions.Les déclarations qui ne sont pas des définitions incluent des déclarations de classe sans la liste des membres et des déclarations de fonction sans le corps de la fonction.
Une déclaration peut avoir l'une des formes suivantes :
[ decl-specifiers ] [ declarator-list ] ;
function-definition
linkage-specification
template-specification
modèles d'alias
explicit-template-instantiation
explicit-template-specialization
namespace-definition
namespace-alias-definition
alias-declaration
using-declaration
using-directive
asm-definition
Le composant decl-specifiers d'une déclaration est indiqué comme étant facultatif, toutefois, il ne peut être omis que dans des déclarations de types de classe ou d'énumérations.
Les déclarateurs du composant declarator-list contiennent les noms déclarés. Même si declarator-list est indiqué comme étant facultatif, il ne peut être omis que dans les déclarations ou les définitions d'une fonction.
Notes
La déclaration d'une fonction est souvent appelée un prototype.Un prototype fournit des informations de type sur les arguments et le type de retour d'une fonction.Par ailleurs, un prototype permet au compilateur d'effectuer des conversions correctes et contribue à la sécurité du type.
Un nom est considéré comme déclaré immédiatement après son déclarateur mais avant son initialiseur (facultatif). Pour plus d'informations, voir Point de déclaration.
Des déclarations se produisent dans une portée. La portée contrôle la visibilité du nom déclaré et la durée de l'objet défini, le cas échéant. Pour plus d'informations sur la façon dont les règles de portée interagissent avec les déclarations, voir Portée.
Une déclaration d'objet est également une définition, sauf si elle contient le spécificateur de classe de stockage extern décrit dans Spécificateurs de classe de stockage. Une déclaration de fonction est également une définition, sauf si elle est un prototype. Un prototype est un en-tête de fonction sans le corps de fonction qui le définit. La définition d'un objet entraîne l'allocation de stockage et les initialisations appropriées pour cet objet.
Rubriques connexes
Pour plus d'informations sur function-definition, voir Définitions de fonction C++.
Pour plus d'informations sur linkage-specification, voir Spécifications de liaison.
Pour plus d'informations sur template-specification, explicit-template-instantiation et explicit-template-specialization, voir Modèles.
Pour plus d'informations sur namespace-definition et namespace-alias-definition, voir Espaces de noms (C++).
Pour plus d'informations sur asm-definition, voir __asm.