Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 08.pptx
Скачиваний:
34
Добавлен:
21.05.2015
Размер:
153.56 Кб
Скачать

Функции, часть 2:

ссылки, перегрузка и использование аргументов по умолчанию

-Ссылка — это неявный указатель.

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

-Используя возможность задания аргументов по умолчанию, можно определить значение для параметра, которое будет

Два способа передачи аргументов

1. При вызове по значению функции передается значение аргумента.

В этом случае значение аргумента копируется в формальный параметр подпрограммы. Следовательно, изменения, внесенные в параметры

2. При вызове по ссылке функции передается адрес аргумента.

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

#include <iostream> using namespace std; int sqr_it(int x); int main()

{

int t=10;

cout << sqr_it(t) << ' ' << t;

return 0;

}

int sqr_it(int x)

{

x = x*x;

return x;

}

void swap(int *х, int *у)

{

int temp;

temp = *x; // Временно сохраняем значение, расположенное по адресу х.

*х = *у; // Помещаем значение,

хранимое по адресу у, в адрес х.

*у = temp; // Помещаем значение, которое раньше хранилось по адресу х, в

адрес у.

}

При выполнении этой функции будет совершен реальный обмен содержимым переменных, используемых при ее вызове.

#include <iostream> using namespace std;

// Объявляем функцию swap(), которая использует указатели.

void swap(int *х, int *у); int main()

{

int i, j;

i = 10;

j = 20;

cout << "Исходные значения переменных i и j: ";

cout << i << ' ' << j << '\n';

swap(&j, &i); // Вызываем swap() с адресами переменных i и j.

cout << "Значения переменных i и j после обмена: ";

cout << i << ' ' << j << '\n';

return 0;

}

Результаты выполнения этой программы

Исходные значения переменных i и j: 10 20

Значения переменных i и j после обмена: 20 10

Ссылочные параметры

Ссылочный параметр

автоматически получает адрес соответствующего аргумента.

При использовании ссылочного параметра функции автоматически передается адрес (а не значение) аргумента.

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

// Использование ссылочного параметра. #include <iostream>

using namespace std; void f(int &i);

int main()

{

int val = 1;

cout << "Старое значение val: " << val << '\n';

f(val); // Передаем адрес переменной val функции f().

cout << "Новое значение val: " << val << '\n';

return 0;

}

void f(int &i)

{

i = 10; // Модификация аргумента, заданного при вызове.

}

Соседние файлы в папке lekcii_1_10