Урок 89. Ссылки и const

   ⁄ 

 Обновлено 20 Окт 2017

  ⁄   

Так же, как можно объявить указатель на константное значение, также можно объявить и ссылку на значение const.

Ссылки на константные значения

Осуществляется это путем добавления ключевого слова const перед типом данных:

Ссылки на константные значения часто называют просто «ссылки на константы» или «константные ссылки».

Инициализация ссылок на константы

В отличие от ссылок на неконстантные значения, которые могут быть инициализированы только неконстантными l-values, ссылки на константные значения могут быть инициализированы неконстантными l-values, константными l-values и r-values.

Как в случае с указателями, константные ссылки также могут ссылаться и на неконстантные переменные. При доступе к значению через константную ссылку, это значение автоматически считается const, даже если исходная переменная таковой не является:

Ссылки на r-values продлевают время жизни значений, на которые ссылаются

Обычно r-values имеют область видимости выражения, что означает, что они уничтожаются в конце выражения, в котором созданы.

Однако, когда константная ссылка инициализируется значением r-value, время жизни r-value продлевается в соответствии со временем жизни ссылки.

Константные ссылки в качестве параметров функции

Ссылки, используемые в качестве параметров функции, также могут быть константными. Это позволяет получить доступ к аргументу без его копирования, гарантируя, что функция не изменит значение, на которое ссылается ссылка.

Ссылки на константные значения особенно полезны в качестве параметров функции из-за их универсальности. Константная ссылка в качестве параметра позволяет передавать неконстантный аргумент l-value, константный аргумент l-value, литерал или результат выражения:

Результат:

3457

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

Правило: Переменные не указатели, не фундаментальных типов данных передавайте в функцию по (константной) ссылке.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (3 оценок, среднее: 4,67 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *