#include<iostream><vector><stdexcept><><cstdlib> <typename T> <T> elems; push(T &); pop(); T top() ; empty() { <typename T> Stack<T>::push(T &<typename T> Stack<T> out_of_range(<typename T><T>::top() out_of_range(
可以發現,類模板Stack<>是通過C++標准庫vector<>來實現的,我們可以不需要親自設計內存管理、拷貝構造函數和賦值運算
為了使用類模板對象,必須顯式地指定模板實參,下面的例子展示了如何使用類模板Stack<>:
<><><<intStack.top()<<<<stringStack.top()<<(exception &<<<<ex.what()<<
通過聲明類型Stack<int>,在類模板內部就可以用int實例化T。因此,intStack是一個創建自Stack<int>的對象,它的元素存儲於vector,且類型為int,類似,如果聲明和使用Stack<string>將會創建相應的對象。
foo(Stack<> &<> istack[
借助於typedef,可以方便的使用類模板:
typedef Stack<> foo(IntStack &<> istack[
類模板的特化
可以使用模板實參來特化類模板,和函數模板的重載類似,通過特化類模板,你可以優化基於某種特定類型的實現,或者克服某種特定類型在實例化類模板時所出現的不足。
為了特化一個類,你必須在起始處聲明一個template<>,接下來聲明用來特化類模板的類型:
template<> Stack<><> push( & top() empty() Stack<>::push( & Stack<> Stack<>