Составители:
Рубрика:
template <class Data> class A
{
class B
{
public:
Data d;
B *next;
B *prev;
B(Data dat = 0)
{
d = dat;
next = 0;
prev =0;
}
};
...
};
Класс Data можно рассматривать как формальный параметр, на место которого при
компиляции будет подставлен конкретный тип данных.
Для любых параметров шаблона могут быть заданы значения по умолчанию, на-
пример:
template<class T> class array { /* ... */ };
…
template<class K, class V, template<class T> class С = array> class Map
{
C<K> key;
C<V> value;
...
};
Область действия параметра шаблона - от точки описания до конца шаблона, по-
этому параметр
можно использовать при описании следующих за ним, например:
template<class Т, Т* р, class U = Т> class X {/*...*/};
Методы шаблона класса автоматически становятся шаблонами функций. Если ме-
тод описывается вне шаблона, его заголовок должен иметь следующие элементы:
template <описание_параметров_шаблона>
возвр_тип имя_класса <параметры_шаблона >::
имя_функции (список_параметров функции)
Описание параметров шаблона в заголовке функции должно соответствовать шаб-
лону класса, при этом имена параметров могут не совпадать. Проще рассмотреть син-
таксис описания методов шаблона на примере:
template <class Data> void A<Data>: :print()
{ /* тело функции */ }
100
templateclass A { class B { public: Data d; B *next; B *prev; B(Data dat = 0) { d = dat; next = 0; prev =0; } }; ... }; Класс Data можно рассматривать как формальный параметр, на место которого при компиляции будет подставлен конкретный тип данных. Для любых параметров шаблона могут быть заданы значения по умолчанию, на- пример: template class array { /* ... */ }; … template class С = array> class Map { C key; C value; ... }; Область действия параметра шаблона - от точки описания до конца шаблона, по- этому параметр можно использовать при описании следующих за ним, например: template class X {/*...*/}; Методы шаблона класса автоматически становятся шаблонами функций. Если ме- тод описывается вне шаблона, его заголовок должен иметь следующие элементы: template <описание_параметров_шаблона> возвр_тип имя_класса <параметры_шаблона >:: имя_функции (список_параметров функции) Описание параметров шаблона в заголовке функции должно соответствовать шаб- лону класса, при этом имена параметров могут не совпадать. Проще рассмотреть син- таксис описания методов шаблона на примере: template void A: :print() { /* тело функции */ } 100
Страницы
- « первая
- ‹ предыдущая
- …
- 98
- 99
- 100
- 101
- 102
- …
- следующая ›
- последняя »
