Références (C++)

Les références peuvent être déclarées à l'aide de la syntaxe suivante :

[storage-class-specifiers] [cv-qualifiers] type-specifiers 
[ms-modifier] declarator [= expression];

Tout déclarateur valide spécifiant une référence peut être utilisé. La syntaxe simplifiée suivante s'applique, sauf si la référence est une référence à un type de fonction ou à un type tableau :

[storage-class-specifiers] [cv-qualifiers] type-specifiers & 
[cv-qualifiers] identifier [= expression];

Les références sont déclarées à l'aide de la séquence suivante :

1. Les spécificateurs de déclaration :

  • Spécificateur de classe de stockage facultatif.

  • Qualificateurs const et/ou volatile facultatifs.

  • Spécificateur de type : nom d'un type.

  • 2. Déclarateur :

  • Modificateur spécifique Microsoft facultatif. Pour plus d'informations, consultez Modificateurs spécifiques Microsoft.

  • Opérateur &.

  • Qualificateurs const et/ou volatile facultatifs.

  • Identificateur.

3. Initialiseur facultatif.

Les formes de déclarateur les plus complexes pour les pointeurs vers des tableaux et des fonctions s'appliquent également aux références aux tableaux et aux fonctions. Consultez pointeurs et déclarateurs.

Plusieurs déclarateurs et initialiseurs peuvent apparaître dans une liste séparée par des virgules après un spécificateur de déclaration unique. Par exemple :

int &i; 
int &i, &j; 

Les références, les pointeurs et les objets peuvent être déclarés ensemble :

int &ref, *ptr, k; 

Une référence contient l'adresse d'un objet, mais se comporte syntaxiquement comme un objet.

Dans le programme suivant, notez que le nom de l'objet, Today, et la référence à l'objet, TodayRef, peuvent être utilisés de la même manière dans les programmes :

Exemple

// references.cpp
#include <stdio.h>
struct S {
   short i;
};

int main() {
   S  s;   // Declare the object.
   S& SRef = s;   // Declare the reference.
   s.i = 3;

   printf_s("%d\n", s.i);
   printf_s("%d\n", SRef.i);

   SRef.i = 4;
   printf_s("%d\n", s.i);
   printf_s("%d\n", SRef.i);
}
  

Commentaire

Rubriques de cette section :

Voir aussi

Référence

Initialisation des références