Студопедия

КАТЕГОРИИ:

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


ПРИКЛАД 1




ПРАКТИЧНЕ ЗАНЯТТЯ №11

Тема: Шаблоны (templates). Шаблонні функції у мові C++

Мета : навчититись створювати шаблонні функції та првцювати з ними

Обладнання: Персональні комп’ютери

ТЕОРЕТИЧНІ ВІДОМОСТІ

Шаблонице одне з найбільш складних і потужних засобів в С + + і лише кілька років тому став невід'ємною частиною програмування на С + + .
Шаблони дозволяють досягти одну з найважчих цілей у програмуванні - створити багаторазово використовуваний код . Використовуючи шаблони , можна створювати узагальнені функції і класи. В узагальненій функції ( або класі ) оброблюваний нею (ним ) тип даних задається як параметр . Таким чином , одну функцію або клас можна використовувати для різних типів даних, що не надаючи явним чином конкретні версії для кожного типу даних.

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

1. Оголошення та виклик шаблонних функцій

 

Шаблонні функції - узагальнене визначення функції, за яким компілятор автоматично згенерує код конкретного екземпляра функції. Шаблонні функції інакше називакпься параметризованими, або template-функціями.

Використовуються у випадку, коли необхідно виконати обчислення для декількох різних типів даних за одним і тим самим алгоритмом.

Шаблонні функції оголошують за допомогою кваліфікатора template:

template < class ТІ /*, ... , class Tn*/ >

тип_функції ім'я_функції ( ТІ tl /* , ... , Tn tn,

параметри інших типів*/ );

У кутових дужках після слів class вказуються формальні параметри типів. Замість слова class можна використати typename. Параметри типів можуть бути використані для оголошень формальних параметрів та локальних даних функції.

 

Для завдання параметрезованих типів даних замість ключового слова class може також використовуватися ключове слово typename .

Параметри шаблону , наступні за ключовим словом class або typename . називають параметризованими типами .

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

 

Приклад шаблонної функції для обміну значень двох змінних:

ПРИКЛАД 1

 

template <class T>

void swap(T& tl, T& t2)

{ T t=tl;

tl=t2;

t2=t;

}

 

Шаблонна функція може бути перевантажена, наприклад, для циклічного обміну трьох значень:

template <class T>

void swap(T& tl,T& t2,T& t3)

{ T t=tl;

tl=t2;

t2=t3;

t3=t;

}

 

Порядок виклику функцій:

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

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

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

 

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

#include <cstring>

void swap(char *tl,char *t2)

{ char t[10];


Поделиться:

Дата добавления: 2015-08-05; просмотров: 63; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты