Tracks
/
C++
C++
/
Temario
/
Referencias
Re

Referencias en C++

1 ejercicio

Acerca de Referencias

Copias y referencias

Con nuestros conocimientos actuales, es un poco engorroso actualizar una variable con la ayuda de una función. Cada argumento de función se trata como una copia y no modifica el valor original. Dependiendo del tamaño de tu tipo, esto puede tener graves consecuencias para el rendimiento de tu código.

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

References se pueden ver como alias: los cambios que se hagan en ellos afectan a la variable original. References usan un ampersand (&) en la declaración de tipo.

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

Reasignar (cambiar la vinculación de una reference) no es posible. No puedes tener una reference sin inicializar. References deben inicializarse con una variable existente.

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

Con el poder de las references, puede que no necesites devolver un valor de una función en absoluto. void se usa como tipo de retorno en este escenario.

void increase_power(int& level) {
    level += 500;
}
int goku{8700};
increase_power(goku);
// goku's power level?
// It's over 9000!
Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Referencias