Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 8.docx
Скачиваний:
3
Добавлен:
25.11.2018
Размер:
30.55 Кб
Скачать

7. Как используя функцию с ссылкой в качестве параметра, защитить

информацию на которую ссылается ссылка от модификации.

Если вы хотите, чтобы функция использовала информацию, которая ей передается, и не изменяла ее, и если при этом вы желаете пользоваться ссылками, то вам потребуется прибегнуть к помощи постоянной ссылки. Для этого необходимо воспользоваться спецификатором const в прототипе функции и в заголовке функции: double refcube(const double & ra);

При таком использовании спецификатора const, компилятор будет отображать сообщение об ошибке всякий раз, когда обнаружит код, изменяющий значение .

8. Временные переменные, ссылочные аргументы и модификатор const.

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

Тип фактического аргумента выбран правильно, но сам

параметр не является LValue (L-значение) (Термин "LValue" происходит из выражения присваивания Е1=Е2, в котором левый операнд Е1 должен быть адресным (value) выражением.)

Тип фактического параметра выбран неправильно, но этот тип может быть преобразован в корректный тип.

Аргумент, другими словами, L-значение, представляет собой объект данных, который можно снабжать ссылками.

Если аргумент в обращении к функции не является L-значением или несовместим по типу с соответствующим параметром ссылки const, C++ создает анонимную переменную нужного типа, присваивает значение аргумента обращения к функции анонимной переменной и получает параметр,-ссылающийся на эту переменную.

ИСПОЛЬЗУЙТЕ МОДИФИКАТОР CONST ТАМ, ГДЕ ЭТО ВОЗМОЖНО

Имеются три "железных" довода в пользу объявления ссылочных аргументов в качестве ссылки на константы:

Применение спецификатора const предотвращает появление программных ошибок, которые могут изменить данные.

Применение спецификатора const позволяет функции выполнять обработку формальных аргументов как со спецификатором const, так и без него, в то время как функция, в прототипе которой спецификатор const опущен, может принимать только данные, не имеющие статуса const.

Использование ссылки с модификатором const позволяет функции генерировать и использовать временные переменные по своему усмотрению. Рекомендуется объявлять формальные ссылочные аргументы

со статусом const во всех случаях, когда для этого есть возможность

9. Использование ссылок при работе со структурами.

Ссылки очень хорошо сочетаются со структурами и классами, т.е. с типами данных, которые в C++ объявляет пользователь. Собственно говоря, ссылки были введены, прежде всего для использования именно с этими типами, а не с основными встроенными типами данных. Метод использования ссылок на структуры ничем не отличается от метода использования ссылок на переменные базовых типов, для этого просто достаточно воспользоваться оператором ссылки & при объявлении параметра структуры.