Статьи

Учебные материалы по языку C++ — от основ до продвинутых тем

Ссылки в C++

Страница 19 из 43 · 2026-10-25 · 1 мин чтения

Ссылки в C++

Что такое ссылка

Ссылка — другое имя уже существующего объекта. Обычная lvalue-ссылка объявляется с &:

int value = 10;int& alias = value;alias = 25;std::cout << value << '\n'; // 25

После инициализации ссылка не может быть перенаправлена на другой объект. Присваивание через ссылку меняет сам объект.

Ссылка должна быть инициализирована

int value = 5;int& ref = value;

Нельзя объявить обычную ссылку без инициализации. В отличие от указателя, ссылка в корректном коде предназначена для обозначения существующего объекта.

Константная ссылка

const T& позволяет читать объект, не копируя его и не изменяя через эту ссылку:

void Show(const std::string& text) {    std::cout << text << '\n';}

Константная ссылка может связываться с временным объектом, продлевая его время жизни в некоторых контекстах, например при локальном объявлении const std::string& ref = MakeString();. Однако возвращать ссылку на локальный объект из функции нельзя.

Ссылки и указатели

СсылкаУказатель
Инициализируется при объявленииМожет быть nullptr
Не перенаправляетсяМожно изменить адрес
Обращение без *Разыменование через *

Возврат ссылки

Возвращать ссылку можно, если исходный объект продолжит существовать:

int& At(std::array<int, 3>& values, std::size_t index) {    return values.at(index);}

В реальном коде стоит учитывать, что at() может выбросить исключение, а ссылка действительна только пока жив сам контейнер и не произошло недопустимое изменение его состояния.

Итог

Ссылки удобны для параметров и доступа к существующим объектам. Главное правило безопасности — никогда не оставлять ссылку на объект, время жизни которого уже завершилось.