Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Параметры шаблонов



Параметрами шаблонов могут быть абстрактные типы или переменные встроенных типов, таких как int.

Первый вид параметров мы уже рассмотрели.

При инстанцировании на их место подставляются аргументы либо встроенных типов, либо типов, определенных программистом.

Второй вид используется, когда для шаблона предусматривается его настройка некоторой константой. Например, можно создать шаблон для массивов, содержащих n элементов типа Т:

template <class Т, int n> class Array { / *... * / };

Тогда, объявив объект

Array<point, 20> ар;

мы создадим массив из 20 элементов типа point.

Приведем менее тривиальный пример использования параметров второго вида:

void f1() { cout << "I am f1 (). " << endl; }

void f2() { cout << "I am f2 (). " << endl; }

template<void (*pf)()>

struct A { void Show() { pf();} };

int main() {

A<&fl> aa;

aa. Show(); // вывод: I am f1().

A<&f2> ab;

ab. Show();// вывод: I am f2().

Return 0;

}

Здесь параметр шаблона имеет тип указателя на функцию. При инстанцировании класса в качестве аргумента подставляется адрес соответствующей функции.

Естественно, у шаблона может быть несколько параметров.

Параметры шаблона могут иметь умалчиваемые значения:

template<class T=char, int size=64>

class arr {

T data [size];





Дата публикования: 2014-11-28; Прочитано: 210 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...