// test1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <iostream.h>
template <class Type>
class Stack
{
private:
int top;
int length;
Type *s;
public:
Stack(int);
~Stack()
{
delete []s;
}
void Push(Type);
Type Pop();
};
template <class Type>
Stack<Type>::Stack(int n)
{
s = new Type[n];
length = n;
top = 0;
}
template <class Type>
void Stack<Type>::Push(Type a)
{
if(top == length)
{
cout << "Stack is full!" << endl;
return;
}
s[top] = a;
top++;
}
template <class Type>
Type Stack<Type>::Pop()
{
if(top == 0)
{
cout << "stack is empty!" << endl;
return 0;
}
top--;
return s[top];
}
template <typename T1, typename T2>
class MyClass
{
private:
T1 x;
T2 y;
public:
MyClass(T1 a, T2 b)
{
x = a;
y = b;
}
void Show()
{
cout << "x="<<x<<",y="<<y<<endl;
}
};
int main(int argc, char* argv[])
{
Stack<int> s1(10);
Stack<double> s2(10);
Stack<char> s3(10);
s1.Push(11);
cout << s1.Pop() << endl;
MyClass<int, double> obj1(10, 5.3);
obj1.Show();
MyClass<int ,char> obj2(25, 'W');
obj2.Show();
MyClass<char , char*> obj3('M', "this is a template");
obj3.Show();
return 0;
}