Материалы (12) (1115039), страница 3
Текст из файла (страница 3)
Если множество пусто или содержит более одной функции, то генерируетсясообщение об ошибке.Шаблоны классов.Шаблоны создаются для классов, имеющих общую логику работы.Для определения шаблона класса перед ключевым словом class помещаетсяtemplate-квалификатор.template <список_параметров_шаблона_типа> class имя_класса { /*...*/ };Конкретный экземпляр шаблона класса (объект класса) можно создать так:имя_класса <список фактич_парам> объект;Для шаблонов класса никакие фактические параметры по умолчанию невыводятся.Функции-члены класса-шаблона автоматически становятся функциямишаблонами.Шаблоны методов.Можно описывать шаблонные методы в классах, не являющихся шаблонами.Запрещено определять шаблоны для виртуальных методов, из-за возникающихбольших накладных расходов на возможную перестройку таблиц виртуальныхметодов при компиляции.template <class T, int max_size >class stack {T s [max_size];int top;public:stack ( ) { top = 0;}void reset ( ) { top = 0;}void push (T i);T pop ( );bool is_empty ( ) { return top == 0;}bool is_full () { return top == max_size;}};template <class T, int max_size >void stack <T, max_size > :: push (T i) {if ( ! is_full () ) {s [top] = i;top ++;}elsethrow "stack_is_full";}template <class T, int max_size >T stack <T, max_size > :: pop ( ) {if ( ! is_empty () ) {top --;return s [top];}elsethrow "stack_is_empty";}Шаблонный класс stack..