Parcours
/
C++
C++
/
Programme
/
Références
Ré

Références en C++

1 exercice

À propos de Références

Copies et références

Avec les connaissances que nous avons actuellement, il est un peu fastidieux de mettre à jour une variable à l'aide d'une fonction. Chaque argument de fonction est traité comme une copie et ne modifie pas la valeur d'origine. Selon la taille de ton type, cela peut avoir de sérieuses conséquences sur les performances de ton code.

int adjust_salary(int base, int kids) {
    return base + kids * 500;
}
int now_a_mother_of_twins{2500};
adjust_salary(now_a_mother_of_twins, 2);

// now_a_mother_of_twins is still 2500
now_a_mother_of_twins = adjust_salary(now_a_mother_of_twins, 2);
// now_a_mother_of_twins is now 3500

Les References peuvent être vues comme des alias, et les modifier a un effet sur la variable d'origine. Les References utilisent une esperluette (&) dans la déclaration du type.

int balance{1000};
int& budget{balance};
int pro_computer_wheels{699};
budget -= pro_computer_wheels;
// budget is now 301;
// balance is also 301;

Réassigner (changer la liaison d'une reference) n'est pas possible. On ne peut pas avoir une reference non initialisée. Les References doivent être initialisées avec une variable existante.

int main_acc{1'000'000};
int side_acc{-20};
int& savings{main_acc};
// => main_acc and savings are 1'000'000

// try to reseat savings to use main account
savings = side_acc;
// savings and main_acc are now -20
// as this uses the **value** of side_acc
savings += 20;
// savings and main_acc are now 0, side_acc is stil -20

int& future_budget;
// => compiler error, reference must be bound!

void

Grâce à la puissance des references, il se peut que tu n'aies pas besoin de renvoyer de valeur depuis une fonction. void est utilisé comme type de retour dans ce cas.

void increase_power(int& level) {
    level += 500;
}
int goku{8700};
increase_power(goku);
// goku's power level?
// It's over 9000!
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Références