Читайте также:
|
|
Перегруженные функции
Перегруженная функция выполняет различные действия, зависящие от типов данных, передаваемых ей. Рассмотрим пример:
void repchar(); // прототипы
void repchar(char);
void repchar(char, int);
int main()
{
repchar();
repchar('=');
repchar('+', 30);
return 0;
}
В этой прог-е используются три ф-ии с одинаковым именем. Каждой из ф-ий соответствует свое объявление, определение и вызов. Сигнатура ф-ии позволяет различать между собой ф-ии по количеству аргументов и их типам. Какая ф-ия будет выполнятся зависит от количества аргументов, указанных в вызове.
Аналогичным образом можно определить несколько ф-ий с одинаковыми именами и количеством аргументов. Типы, передаваемые в функцию, должны быть различны. Тогда компилятор сможет правильно определить с какой ф-ией надо работать.
Рекурсивные функции
Рекурсия позволяет ф-ии вызывать саму себя на выполнение.
#include <iostream>
using namespace std;
unsigned long factfunc(unsigned long); // прототип
int main()
{
int n; // число, вводимое пользователем
unsigned long fact; // факториал этого числа
cout << "Введите целое число:";
cin >> n;
fact = factfunc(n);
cout << "Факториал числа " << n << "равен " << fact << endl;
return 0;
}
// рекурсивно подсчитывает факториал числа
unsigned long factfunc(unsigned long n)
{
if(n > 1)
return n * factfunc(n-1); // вызов самой себя
else
return 1;
}
Эта программа считает факториал. В случае, если параметр окажется больше 1, происходит вызов ф-ией самой себя, при этом используется значение аргумента меньше на 1. Каждая рекурсивная ф-ия должна включать в себя условие окончания рекурсии.
Встроенные функции
Для того чтобы сократить время выполнения ф-ий, можно дать указание компилятору, чтобы при каждом вызове такой ф-ии вместо команды перехода производилась подстановка операторов, выполняемых ф-ией, в код прог-ы. Встраиваемые ф-ии пишутся так же, как и обычные, но при компиляции их исполняемый код вставляется в исходный код прог-ы. ВФ следует делать короткие ф-ции, содержащие 1-2 операции.
Для того чтобы использовать ВФ, необходимо указать ключевое слово inline в прототипе ф-ии:
inline float lbstokg(float pounds)
ключевое слово является рекомендацией компилятору, оно может быть проигнорировано. Тогда функция будет скомпилирована как обычная. Это произойдет в том случае, если компилятор посчитает ф-ию слишком длинной, чтобы сделать ее встраиваемой.
Дата добавления: 2015-08-17; просмотров: 86 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Определение функции. Передача аргументов и возврат значения по значению, ссылке и указателю. Аргументы по умолчанию. Константы аргументов функции. | | | Область видимости и класс памяти. |