和函数模板的定义类似,这里我们申明和定义一个Stack模板作为学习类模板编程示例。
#include <deque>
#include <stdexcept>
template< typename T>
class Stack{
public:
void push(T const& );
void pop();
T top() const;
bool empty() const{
return _elems.empty();
};
private:
std::deque<T> _elems;
};
//成员函数push的定义;
template< typename T>
void Stack<T>::push(T const& e)
{
_elems.push_front(e);
}
//成员函数pop的定义
template< typename T>
void Stack<T&g