2018/2/23
类模板练习(栈)
/*类的模板练习*/
/*栈*/
#include<iostream>
#include<string>
#include<stdlib.h>
template<class T>//模板,用T来代替模板中的数据类型
class Stack
{
public:
Stack(int size=100);//默认构造(确定栈的初始尺寸为100)
~Stack();//析构器
void push(T value);//入栈参数
T pop();//表示任意的出栈类型
private:
int size;//确定尺寸
int sp;//栈指针
T*data;//用来存放数据的指针
};
/*注意,使用类模板时,使用一次T就要声明一次*/
/*使用某一个类要说明类的说明符::*/
template<class T>
Stack<T>::Stack(int size)//构造器声明
{
this->size = size;
data = new T[size];//数据所占的空间
sp = 0;
}
template<class T>
Stack<T>::~Stack()//声明析构器
{
delete[]data;
}
template<class T>
void Stack<T>::push(T value)//入栈操作
{
data[sp++] = value;
}
template<class T>
T Stack<T>::pop()//出栈,有返回值
{
return data[--sp];
}
void main()
{
//Stack intStack practice
Stack<int>intStack(100);
intStack.push(1);
intStack.push(2);
intStack.push(3);
std::cout<<intStack.pop()<<"\n";
std::cout << intStack.pop() << "\n";
std::cout << intStack.pop() << "\n";
//Stack charStack practice
Stack<char>charStack(100);
charStack.push('a');
charStack.push('b');
charStack.push('c');
std::cout << charStack.pop() <<"\n";
std::cout << charStack.pop() << "\n";
std::cout << charStack.pop() << "\n";
system("pause");
}