boolean full() { return boolean(top=len); } 1; Синтаксис объявления класса предваряется template <class идентификатор> где идентификатор - параметр шаблона, который, по существу, заменяет произвольный тип. Через определение класса аргумент шаблона может использоваться как имя типа. Этот аргумент создается при реализации экземпляра в фактических объявлениях. Пример использующего его объявления стека: stack <char> stk сһ; // stack из 1000 элементов char stack <char *> stk_str(200); // stack из 200 элементов char * stack <complex> stkcmplx(lOO); // stack из 100 элементов complex Правило. При обработке такого типа код всегда должен содержать угловые скобки в виде части объявления. Шаблон (Ьункиий Большинство функций имеют одно и то же тело кода, независимо от типа. Например, инициализация содержимого одного массива от другого того же самого типа. Обычно это код выглядит так: for(i=0; i<n; i++) a[i]=b[i]; Данный код можно на С автоматизировать простой макрокомандой. #define COPY(A,B,N) { int i; for(i=0; i<N; i++) A[i]=B[i]; } Шаблоны обеспечивают для этого следующий полиморфный языковый механизм: template <class TYPE> void copy(TYPE a[],TYPE b[],int n) { for(int i=0; i<n; i++) a[i]=b[i]; } Дружественность Шаблоны классов могут содержать друзей. Friend функция, не использующая спецификацию шаблона, будет универсальной friend для всех экземпляров шаблона класса. Friend функция, которая
RkJQdWJsaXNoZXIy MTExODQxMg==