程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++類模板

C++類模板

編輯:C++入門知識

類模板Stack的實現

#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的使用

為了使用類模板對象,必須顯式地指定模板實參,下面的例子展示了如何使用類模板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<>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved