StackType& stk) { while (stk.s

Автор admin Среда, 20 мая 2009 11:32

StackType& stk) { while (stk.sizeO > 0) { cout « stk.topO « endl: stk.popO; } } // Перегрузка для emptyTheStack (не специализация!) tempiate void emptyTheStack(Stack& stk) { while (stk.sizeO > 0) { cout « *stk.top() « endl; stk.popO: } } int mainO { Stack si; sl.push(l); sl.push(2); emptyTheStack(si): Stack s2: int i – 3; int j – 4; s2.push(&i); s2.push(&j); emptyTheStack(s2): } ///:- Для удобства в программу включены два шаблона функции emptyTheStack. Поскольку шаблоны функций не поддерживают неполной специализации, мы предоставляем перегруженные шаблоны. Вторая версия emptyTheStack более специализирована по сравнению с первой, поэтому она выбирается при каждом использовании типов указателей. В программе создаются три специализации шаблона класса: Stack, Stack и Stack. Специализация Stack создается косвенно, поскольку Stack является производной от нее. Программа, в которой задействованы специализации для разных типов указателей, обеспечивает существенную экономию по сравнению с простым использованием одного шаблона Stack. Разрешение имен Встречая


Комментарии закрыты.