Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры / ООП(Тимофеев) / ООП-Тимофеев.doc
Скачиваний:
41
Добавлен:
16.04.2013
Размер:
328.19 Кб
Скачать

Определение функции

Заголовок функции

{ // тело

Инструкции // функции

} //

Заголовок функции

Тип Имя (Список_объявлений_параметров)

Тип - тип значения, возвращаемого функцией (если оно вообще возвращается)

Имя (Список_ объявлений_параметров) формальные параметры.

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

Инструкция return

используется для возвращения управления и значения (если оно указано).

return; передает управление обратно вызывающее окружение.

return выражение управления и значение выражения передается в вызывающее окружение. Значение выражения должно допускать неявное преобразование к типу, указанному в заголовке определения функции. Например, return; return 25; return (a+b);

Прототипы функций

Прототипы функции – это ее объявление но не определение.Прототип функции имеет следующую форму записи:

Тип Имя (список_объявлений_аргументов);

Список_объявлений_аргументов может быть пустым, содержать единственное объявление или несколько объявлений, разделенных запятыми. Если функция не имеет параметров допускается использование ключевого слова void. В СИ++ функция с пустым списком параметров выглядит как: Имя_функции ( ).

Параметры прототипов:

int min (int, int); //имена параметров можно не указывать

int min (int k, int y);

Аргументы по умолчанию.

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

int sqr_or_power (int n, int k=2) // возведение в степень

{ if ( k= =2 ) return ( n*n ); else return (sqr_or_power (n, k-1)*n); }

Чаще всего эта функция используется для вычисления n в квадрате.

Только несколько последних параметров функции могут иметь значения по умолчанию.

void foo (int i, int j=7 ); // допустимо void foo (int i=3, int j ); // недопустимо

void foo (int i, int j=3, int k=7 ); // допустимо

void foo (int i=1, int j=2, int k=3 ); // допустимо

void foo (int i, int j=2, int k ); // недопустимо

Перегрузка функций

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

Выбор конкретного варианта зависит от типа аргументов, используемых оператором или в вызове функции.

Например,

// нахождение среднего значения элементов массива

double avg_arr (const int a[ ], int size)

{ int sum=0;

for (int i=0; i < size; i++)

sum + = a [i]; // выполняется сложение целых

return (static_east_<double>(sum)/size);

}

double avg_arr (const int a[ ], int size)

{ double sum = 0.0;

for (int i=0; i<size; i++)

sum + = a[i]; // сложение double

return (sum/size);

}

int main ( )

{int w[s]={1, 2, 3, 4, 5};

double x[s] ={1.1, 2.2, 3.3, 4.4, 5.5};

cout << avg_arr (w, 5) << ” – среднее значение для целых” << end l;

cout << avg_arr (x, 5)<< ” – среднее значение для double” << end l;

}

Компилятор выбирает функции в соответствии с типами аргументов и их количеством.

Соседние файлы в папке ООП(Тимофеев)