Головна

перевантаження функцій

  1.  II. Використання внутрішніх функцій, периферійних блоків ...
  2.  V. Перелік скасованих і перетворених органів виконавчої влади і перерозподіл їх функцій
  3.  VII. Перелік перетворених органів виконавчої влади і перерозподіл їх функцій
  4.  VIII. Перелік скасованих і перетворених органів виконавчої влади і перерозподіл їх функцій
  5.  XII. МЕДИКО-ПСИХОЛОГІЧНА ДІАГНОСТИКА: ПОРУШЕННЯ ПСИХІЧНИХ ФУНКЦІЙ, станів, МОВНОЇ ДІЯЛЬНОСТІ І ОСОБИСТІСНИХ ВЛАСТИВОСТЕЙ
  6.  Альтернативна декомпозиція і об'єднання функцій
  7.  Апроксимація функцій з нефінітних спектром

перевантаження функції - Це використання однакового імені для функцій, що виконують схожі дії, але з різними типами даних і оголошених в одній області дії.

Класичним прикладом перевантаження функцій є наявність декількох конструкторів в класі.

Перевантажені функції мають такі властивості:

- Повинні відрізнятися сигнатурою, тобто числом, порядком проходження та типами параметрів; тип значення і імена параметрів не враховуються; приклад перевантаженої функції vvod:

void vvod (int m, int n) {...}

void vvod (float m, float n) {...}

void vvod (float m) {...}

void vvod (char ch) {...}

- Повинні бути оголошені в одній області дії, наприклад, класу, файлу; елементи-функції різних класів не є перевантаженими, так як мають свою область дії клас.

- Вибір відповідної функції проводиться компілятором в результаті порівняння оператора виклику з сигнатурами функцій відповідно до алгоритму вибору.

Алгоритм вибору функції складається з наступних етапів:

- Перевірка на точну відповідність;

- Перевірка на стандартні перетворення типів;

- Перевірка на перетворення, які визначаються класом (див. Вище - в прикладах на перетворення з float в complex і з complex в float ці типи стають сумісними).

приклади:

int x, y; vvod (x, y); // Виклик vvod (int, int), точна відповідність

int x; vvod (x); // Виклик vvod (float), стандартне перетворення

vvod ((char) 1); // Виклик vvod (char), перетворення користувача

Зв'язування оператора виклику функції з визначенням необхідної функції проводиться на етапі компіляції. Це, так зване, раннє зв'язування, що дозволяє отримувати найбільш оптимальний код.

В пов'язаних класах (базовому і похідному) наявність функцій з однаковою сигнатурою призводить до неоднозначності доступу. Програміст повинен сам закласти раннє зв'язування, тобто для виклику необхідної функції використовувати ім'я відповідного класу з операцією дозволу видимості (: :).

У C ++ є засоби, що дозволяють перекласти зв'язування виклику таких функцій з визначення функцій з програміста на саму програму під час її виконання. Це механізм віртуальних функцій або пізніше зв'язування.

 




 Засоби управління екраном і клавіатурою |  Операції і засоби обробки файлів |  Контроль операцій обробки файлів |  Сутність об'єктно-орієнтованого підходу |  Класи і об'єкти |  Конструктори і деструктори |  похідний клас |  Просте і множинне спадкування |  Віртуальні базові класи |  перевантаження операцій |

© um.co.ua - учбові матеріали та реферати