头文件:
#ifndef _TOU_H
#define _TOU_H
typedef unsigned int charu;
template <typename T1>
class ShuZu
{
public:
ShuZu();
void Ruz(T1 data);
~ShuZu();
T1 Chuz() ;
T1 Fun();
int LenDu();
T1 *_table;
charu _size;
int _top;
};
#endif
函数申明:
#include <iostream>
#define SIZE 40
#include "tou.h"
typedef unsigned int charu;
using namespace std;
template <typename T1>
ShuZu<T1>::ShuZu()
{
this->_table = new T1[SIZE];
this->_size = SIZE;
this->_top = 0;
}
template <typename T1>
ShuZu<T1>::~ShuZu()
{
if(_table!=NULL)
{
delete []_table;
_table = NULL;
}
}
template <typename T1>
void ShuZu<T1>::Ruz(T1 data)
{
_top++;
_table[_top] = data;
}
template <typename T1>
T1 ShuZu<T1>::Chuz()
{
T1 temp_data = _table[_top];
_top--;
return temp_data;
}
template <typename T1>
T1 ShuZu<T1>::Fun()
{
return _table[_top];
}
template <typename T1>
int ShuZu<T1>::LenDu()
{
return _top;
}
函数实现:
#include <iostream>
#include "shenm1.cpp"
using namespace std;
int main(int argc, char *argv[])
{
ShuZu<int> s1;
s1.Ruz(5);
s1.Ruz(2);
s1.Ruz(9);
s1.Ruz(8);
cout<< "数组:";
int len=s1.LenDu();
for(int i=0;i<len;i++)
{
cout <<" "<< s1.Chuz();
}
cout<<endl;
ShuZu<string> s2;
s2.Ruz("you");
s2.Ruz("miss");
s2.Ruz("has");
s2.Ruz("I");
cout<< "数组:";
int len1=s2.LenDu();
for(int i=0;i<len1;i++)
{
cout <<" "<< s2.Chuz();
}
cout<<endl;
ShuZu<float> s3;
s3.Ruz(8.0);
s3.Ruz(14.5);
s3.Ruz(0.13);
s3.Ruz(5.2);
cout<< "数组:";
int len2=s3.LenDu();
for(int i=0;i<len2;i++)
{
cout <<" "<< s3.Chuz();
}
return 0;
}