C++類模板 template


C++在發展的后期增加了模板(template )的功能,提供了解決這類問題的途徑。可以聲明一個通用的類模板,它可以有一個或多個虛擬的類型參數。

比如:

  1. class Compare_int
  2. class Compare_float

都是比較大小的函數,只是參數類型不同,於是用一個類模版綜合成一個函數:

template <class numtype> //聲明一個模板,虛擬類型名為numtype
class Compare //類模板名為Compare
{
public : 
     Compare(numtype a,numtype b){      
            x=a;y=b;   
     }   
     numtype max( ){
        return (x>y)?x:y; 
     }   
     numtype min( ){
        return (x<y)?x:y;   
     }
private :   
    numtype x,y;
};

    

1. 用類模板定義對象時用以下形式:
    類模板名<實際類型名> 對象名;
    類模板名<實際類型名> 對象名(實參表列);
如:
    Compare<int> cmp;
    Compare<int> cmp(3,7);

 

2. 如果在類模板外定義成員函數,應寫成類模板形式:
   template <class 虛擬類型參數>
   函數類型 類模板名<虛擬類型參數>::成員函數名(函數形參表列) {…}

   template <class numtype>
    numtype Compare<numtype>::max( )
    {
        return (x>y)?x:y;
    }

 

3. 類模板的類型參數可以有一個或多個,每個類型前面都必須加class,如:
    template <class T1,class T2>
    class someclass
    {…};
在定義對象時分別代入實際的類型名,如:
    someclass<int,double> obj;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM