Partager via


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.

  • Qualifier une déclaration en tant que const ou volatile.

  • 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.

Voir aussi

Autres ressources

Référence du langage C++