Ссылки и const
Передаём данные без копирования и запрещаем лишние изменения
После урока ты сможешь
- Отличать передачу по значению от передачи по ссылке
- Передавать большие объекты как const&
- Изменять аргумент через ссылку, когда это действительно нужно
Шаг 1 из 7
Ссылка — второе имя переменной
В прошлом уроке функция получала копию аргумента и не могла изменить оригинал. Иногда это ровно то, что нужно. Но бывает, что функция должна поменять переменную вызывающего: обменять два значения, начислить бонус, нормализовать строку. Для этого есть ссылки.
Ссылка — это другое имя для уже существующей переменной. Не копия, а та же самая ячейка памяти:
#include <print>
int main() {
int score = 10;
int& alias = score; // alias — второе имя для score
alias += 5;
std::println("score = {}", score); // 15
}
int& читается как «ссылка на int». Ссылку обязательно привязывают к переменной при создании, и перепривязать её потом нельзя: она всю жизнь будет вторым именем той же переменной.
Проверь себя
Что выведет программа?
#include <print>
int main() {
int a = 1;
int& r = a;
r = 5;
std::println("{}", a);
}