Rencontre du troisième type
- En C, 2 types de données
- variable (une donnée d’un type concret)
- pointeur (une donnée contenant une valeur d’adresse en mémoire)
- C++ ajoute un troisième type
- les références
- similaire aux pointeurs
- conserve la notation pointée
- ne permet pas l’usage de types incomplets
- permet la modifications des paramètres de fonctions/méthodes
- Notation
- Déclaration avec l’opérateur &
- Usage sans syntaxe particulière
Les références par l’exemple
int main(){
int a = 10;
int &ref = a; // ref "pointe" sur a
cout << ref << endl; // affiche 10
return 0;
}
- Une référence doit toujours être initialisée à la déclaration
- Exemple peut être dangereux
- Si a est invalidé alors que ref existe encore
- Références beaucoup utilisées pour passage de paramètres.
Exemple sur paramètres de fonctions
void swap(int *a, int *b) {
int c = *a;
*a = *b;
*b = c;
}
// ...
int a=10, b=42;
swap(&a, &b);
void swap(int &a, int &b) {
int c = a;
a = b;
b = c;
}
// ...
int a=10, b=42;
swap(a, b);
Le mot-clé auto
-
Permet de faire de la déduction de type
-
Si c’est possible sans ambiguïté
-
Ne fonctionne pas pour les méthodes virtuelles
-
Exemple :
int a;
auto *p = &a; // déduit int *
auto v = 6; // déduit int
double f() {/*...*/ }
const auto r = f(); // déduit le retour de double