Chap6. Class Templates I
Should be considered, whenever you write several class specifications that
differ only in the type of data acted on.
// implements stack class as a template
#include <iostream.h>
const int MAX = 100;
template <class Type>
class Stack
{
private:
Type st[MAX]; // stack: array of any type
int top; // number of top of stack
public:
Stack() // constructor
{ top = -1; }
void push(Type var) // put number on stack
{ st[++top] = var; }
Type pop() // take number off stack
{ return st[top--]; }
};
void main()
{
Stack<float> s1; // s1 is object of class Stack<float>
s1.push(1111.1); // push 3 floats, pop 3 floats
s1.push(2222.2);
s1.push(3333.3);
cout << "1: " << s1.pop() << endl;
cout << "2: " << s1.pop() << endl;
cout << "3: " << s1.pop() << endl;
Stack<long> s2; // s2 is object of class Stack<long>
s2.push(123123123L); // push 3 longs, pop 3 longs
s2.push(234234234L);
s2.push(345345345L);
cout << "1: " << s2.pop() << endl;
cout << "2: " << s2.pop() << endl;
cout << "3: " << s2.pop() << endl;
}