Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Перегруженные функции. Встроенные функции. Рекурсивные функции.

Структура программы. Директивы. Переменные и константы. | Типы данных. Преобразования типов. | Циклы и ветвления | Синтаксис определения структуры, структурной переменной. Доступ к полям структуры, присвоение структурных переменных. | Синтаксис определения, инициализация указателя на структуру. Работа с полями структуры через указатели. | Объявление и инициализация одномерного и двумерного массивов. Работа с элементами массива через указатель. | Принципы ООП. Инкапсуляция. Наследование. Полиморфизм. | Конструкторы и деструкторы. Конструкторы копирования по умолчанию. | Объекты как аргументы методов и доступ к их числам. | Размещение в памяти членов объектов одного класса и способ создания общих полей (св-в). |


Читайте также:
  1. Алгоритм нахождения точек экстремума по первому признаку экстремума функции.
  2. Виртуальные функции.
  3. Воображение: определение, виды, функции. Роль воображения в решении познавательных и личностных проблем. Роль игры в развитии воображения. Воображение и творчество.
  4. Вопрос № 54: Органы ФСБ России: их задачи и функции.
  5. Вопрос № 62 и 63: Судебная власть: природа и функции. Понятие правосудия и его конституционные признаки.
  6. Вспомогательные функции.
  7. Встроенные пучки в конденсаторе.

Перегруженные функции

Перегруженная функция выполняет различные действия, зависящие от типов данных, передаваемых ей. Рассмотрим пример:

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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Определение функции. Передача аргументов и возврат значения по значению, ссылке и указателю. Аргументы по умолчанию. Константы аргументов функции.| Область видимости и класс памяти.

mybiblioteka.su - 2015-2024 год. (0.005 сек.)