A jelenlegi tudásunkkal kissé körülményes egy függvény segítségével frissíteni egy változót. A függvények minden argumentumát másolatként kezeljük, így az nem változtatja meg az eredeti értéket. A típusod méretétől függően ennek komoly következményei lehetnek a kódod teljesítményére.
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
A References tekinthető álneveknek: a rajtuk végzett változtatások hatással vannak az eredeti változóra.
A References a típusdeklarációban és-jelet (&) használ.
int balance{1000};
int& budget{balance};
int pro_computer_wheels{699};
budget -= pro_computer_wheels;
// budget is now 301;
// balance is also 301;
A Reseating (egy reference kötésének megváltoztatása) nem lehetséges.
Nem lehet inicializálatlan reference-ed.
A References-t egy létező változóval kell inicializálni.
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!
voidA references erejével előfordulhat, hogy egyáltalán nem kell visszaadnod értéket egy függvényből.
Ilyen esetben a void-ot használjuk visszatérési típusként.
void increase_power(int& level) {
level += 500;
}
int goku{8700};
increase_power(goku);
// goku's power level?
// It's over 9000!