CS202   7- ‹#›
Class Templates
ntemplate <class TYPE>   class stack {
n  private:
n   TYPE * stack_array;
n   const int stack_size;
n   int stack_index;
n  public:
n   stack (int size=100): stack_size(size), stack_index(0) {  stack_array = new TYPE[size]; } ...
n};
ntemplate <class TYPE> void stack<TYPE>::push(TYPE item) {
n  if (stack_index < stack_size) {
n    stack_array[stack_index] = item;
n    ++stack_index; }  }
n//An explicit specialization
ntemplate <> void stack <char *>::push(char * item) {
n  if (stack_index < stack_size) {
n    stack_array[stack_index] = new char[strlen(item)+1];
n    strcpy(stack_array[stack_index], item);
n    ++stack_index; }  }
n