Class Map

{

C<K> key;

C<V> value;

...

};

 

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

 

template<class Т, Т* p, class U = Т> class X{ /*...*/};

 

Методи шаблону класу автоматично стають шаблонами функцій. Якщо метод описується поза шаблоном, його заголовок повинен мати наступні елементи:

 

template <опис_параметрів_шаблону>

поверт_тип ім’я_класу <параметри_шаблону>::

ім’я функції (список_параметрів функції)

 

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

 

template <class Data> void List<Data>::print()

{ / * тіло функції */ }

 

Тут <class Data> – опис параметра шаблону, void – тип значення, яке повертається функцією. List – ім'я класу, <Data> – параметр шаблону, print – ім'я функції без параметрів.

У разі декількох параметрів порядок їх проходження в описі параметрів і параметрах шаблону має бути один і той же, наприклад:

 

template<class T1, class T2> struct A

{

void f1 ();

};

 

template<class T2, class T1> void A<T2, T1 >::f1(){...}

 

Нижче перераховані правила опису шаблонів.

1. Локальні класи не можуть містити шаблони як свої елементи.

2. Шаблони методів не можуть бути віртуальними.

3. Шаблони класів можуть містити статичні елементи, дружні функції і класи.

4. Шаблони можуть бути похідними як від шаблонів, так і від звичайних класів, а також бути базовими і для шаблонів, і для звичайних класів.

5. Усередині шаблону не можна визначати friend-шаблони.

Як приклад шаблону розглянемо повний опис класу двохзв'язного списку List з параметрами.

 

#include <iostream>

using namespace std;

 

template <class Data> class List

{

public:








Дата добавления: 2014-12-26; просмотров: 684;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.