Программирование на языке высокого уровня. Марапулец Ю.В. - 100 стр.

UptoLike

Составители: 

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
template  class 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