Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lek_1_slaydy.doc
Скачиваний:
1
Добавлен:
17.11.2019
Размер:
417.79 Кб
Скачать

41: Return array[index]; // Вернуть ссылку на элемент массива

42: }

43:

44: void ShowArray(void)

45: {

46: cout << "\nArray:\n";

47: for (int i = 0; i < SIZE; i++)

48: cout << "[" << i << "] == " << array[i] << '\n';

49: }

Г лобальный массив вещественных значений двойной точности объявляется в строке 13. В больших по раз­мерам программах он может находиться в отдельном модуле. Хотя программа отображает значения и вставля­ет их в этот массив, это происходит без непосредственных ссылок на глобальную структуру данных в функ­ции main(). Благодаря ссылочным функциям можно изменить внутреннее содержимое вещественных значений двойной точности (возможно, используя связный список вместо массива), и программа останется рабочей без малейших изменений в функции main()..

В строке 10 объявляется ссылочная функция с именем ref(). Она возвращает ссылку на вещественный объ­ект двойной точности, идентифицированный целочисленным параметром-индексом. Поскольку функция воз­вращает ссылку на вещественный объект двойной точности, имя функции может оказаться слева от оператора присваивания, как показано в строке 21. Вероятно, это самое частое употребление ссылочных функций. Опе­ратор в строке 21 присваивает значение вещественному объекту двойной точности, на который ссылается ref(index). Конкретное внутреннее представление этого объекта несущественно. Ссылочная функция скрывает внутреннее представление данных.

В строке 31 приводится еще один способ использования ссылочных функций. Вещественный результат двойной точности из функции atof() присваивается функции ref(index). Если ref — массив, этот оператор мо­жет быть написан так:

ref[index] = atof(buffer);

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

Ссылочная функция приводится в строках 37-42. Оператор if обеспечивает значения индекса в области до­пустимых значений, после чего оператор return в строке 41 возвращает ссылку на одно из вещественных значений двойной точности в глобальном массиве. Важно разобраться, что в строке 41 не возвращается веще­ственное значение двойной точности. Возвращается ссылка на объект этого типа. Если бы ref() возвращала ве­щественное значение двойной точности, то она не могла бы использоваться в левой части оператора присваи­вания, как это произошло в main().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]