1. 在类模板中使用类型时要加上模板类型,如:Stack<T>。而表示类时就只用类名,如:Stack。
2. 一个绝对异常安全并且返回被删除元素的pop()是不可能的。参考[CargillExceptionSafty]
3. 对于类模板,成员函数只有在被使用的时候才会被实例化。如果类模板中含有静态成员,那么用来实例化的每种类型,都会实例化这些静态成员。
4. 特化类模板
template<>
class Stack<std::string>
{
public:
void push(std::string const& elem);
void pop();
std::string top() const;
bool empty() const;
private:
//Stack(Stack<T> const&);
Stack<std::string>& operator=(Stack<std::string> const&);
private:
std::vector<std::string> m_elems;
};
void Stack<std::string>::push(const std::string &elem)
{
m_elems.push_back(elem);
}