Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Перше звернення до функції max генерує функцію

const String& max(const String& а, const String& b);

Другий обіг генерує функцію

const int& max(const int& а, const int& b);

Оголошення шаблона функції max говорить, що конкретна функція залежить від одного параметра - типа Т. Перше звернення до max в програмі використовує аргументи типу string. В шаблон функції підставляється тип String замість Т. Виходить функція:

const Strings max(const Strings а, const Strings, b)

{

if (а > b)

return а; else

return b;

}

Ця функція компілюється і використовується в програмі. Аналогічні дії відбуваються і при другому зверненні, тільки тепер замість параметра Т підставляється тип int. Як видно з наведених прикладів, компілятор сам визначає, яку функцію треба використовувати і автоматично генерує необхідне визначення.

У функції-шаблона може бути декілька параметрів. Так, наприклад, функція find бібліотеки STL (стандартної бібліотеки шаблонів), яка шукає перший елемент, рівний заданому, в інтервалі значень, має вигляд:

template <class Inlterator, class T>

Inlterator

find(Inlterator first, Inlterator last, const TS val);

Клас Т - це тип елементів інтервалу. Тип Inlterator - тип покажчика на початок і кінець інтервалу.

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

template <class T>

const T& max(const T& а, const T& b)

непридатна для використовування з масивами символів. В цьому випадку можна визначити спеціалізовану версію функції. Наступний приклад це демонструє:

#include <iostream>

#include <cstring>

//Повертає більший з двох параметрів

template <class T>

const Т& max(const T& а, const T& b)

{

return а > b ? а : b;

}

char* max(char* strl, char* str2)

{

return strcmp(strl, str2) >= 0 ?

strl : str2;

}

void main()

{

int m = 9, n = 12;

char* str1 = "слово і справа" ;

char* str2 = "слово і cправа" ;

cout « "max int = " « max (m, n);

cout « "max str = " « max (strl, str2);

}

Зустрівши виклик функції, компілятор використовує наступний алгоритм для дозволу посилання:

· знайти звичайну (нешаблонну) функцію, типи параметрів якої в точності відповідають вказаним у виклику;

· якщо функція не знайдена, знайти шаблонну функцію, яка породжує функцію, типи параметрів якої в точності відповідають вказаним у виклику;

· якщо така шаблонна функція не знайдена, знову почати пошук звичайної функції, параметри якої можна перетворити до заданих при виклику.

 


Читайте також:

  1. I. Органи і системи, що забезпечують функцію виділення
  2. Адвокатура в Україні: основні завдання і функції
  3. Алгоритм знаходження ДДНФ (ДКНФ) для даної булевої функції
  4. Але відмінні від значення функції в точці або значення не існує, то точка називається точкою усувного розриву функції .
  5. Аналіз коефіцієнтів цільової функції
  6. Арешт коштів на рахунку платника податків здійснюється виключно на підставі рішення суду, шляхом звернення органу державної податкової служби до суду.
  7. АРХІВНІ ДОВІДНИКИ В СИСТЕМІ НДА: ФУНКЦІЇ ТА СТРУКТУРА
  8. Асимптоти графіка функції
  9. Базальні ядра, їх функції, симптоми ураження
  10. Базові функції, логічні функції
  11. Банки як провідні суб’єкти фінансового посередництва. Функції банків.
  12. Банківська система та її основні функції




Переглядів: 580

<== попередня сторінка | наступна сторінка ==>
 | Використання шаблонів

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.014 сек.