Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
После вызова функция f() возвращает ссылку на переменную val. Поскольку функция f()объявлена с "обязательством" вернуть ссылку, при выполнении строки return val; // Возвращаем ссылку на val. Автоматически возвращается ссылка на глобальную переменную val. Эта ссылка затем Используется инструкцией cout для отображения значения val. При выполнении строки newval = f(); //Присваиваем значение val переменной newval. Ссылка на переменную val, возвращенная функцией f(), используется для присвоения Значения val переменной newval. А вот самая интересная строка в программе. f() = 99.1; // Изменяем значение val. При выполнении этой инструкции присваивания значение переменной val становится равным числу 99,1. И вот почему: поскольку функция f() возвращает ссылку на переменную val, Эта ссылка и является приемником инструкции присваивания. Таким образом, значение 99,1 Присваивается переменной val косвенно, через ссылку на нее, которую возвращает функция f() Один из способов создания ограниченного массива иллюстрируется в следующей Программе. // Простой способ организации безопасного массива. #include <iostream> Using namespace std; int &put(int i); // Помещаем значение в массив. int get(int i); // Считываем значение из массива. int vals[10]; int error = -1; Int main() { put(0) = 10; // Помещаем значения в массив. put(1) = 20; put(9) = 30; cout << get(0) << ' '; cout << get(1) << ' '; cout << get(9) << ' '; // А теперь специально генерируем ошибку. put(12) =1; // Индекс за пределами границ массива. Return 0; } // Функция занесения значения в массив. int &put(int i) { if(i>=0 && i<10) return vals[i]; // Возвращаем ссылку на i-й элемент. else { cout << "Ошибка нарушения границ!\n"; return error; // Возвращаем ссылку на error. } } // Функция считывания значения из массива. Int get(int i) { if(i>=0 && i<10) return vals[i]; // Возвращаем значение i-го элемента. else { cout << "Ошибка нарушения границ!\n"; return error; // Возвращаем значение переменной error. } }
|