天天看點

C++ 類模闆

類模闆的定義

即類采用模闆的形式出現,和函數模闆一樣,對參數沒有具體的執行個體化

template <class T> //聲明一個模闆,虛拟類型名為T。注意:這裡沒有分号。
class Compare //類模闆名為Compare
{
public :
   Compare(T a,T b)
   {
      x=a;y=b;
   }
   T max( )
   {
      return (x>y)?x:y;
   }
   T min( )
   {
      return (x<y)?x:y;
   }
private :
   T x,y;
};
           

與普通類定義相比,類模闆有兩處不同:

1) 聲明類模闆時要增加一行

template <class 類型參數名>
           

template意思是“模闆”,是聲明類模闆時必須寫的關鍵字。在template後面的尖括号内的内容為模闆的參數表列,關鍵字class(也可以用typename)表示其後面的是類型參數。

2) 固定的類型名換成虛拟類型參數名T。

在建立類對象時,如果将實際類型指定為int型,編譯系統就會用int取代所有的T,如果指定為float型,就用float取代所有的T。這樣就能實作“一類多用”。

在類模闆外定義函數,不能用一般定義類成員函數的形式:

T Compare::max( ) {…} //不能這樣定義類模闆中的成員函數
           

而應當寫成類模闆的形式:

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

類模闆的執行個體化

Compare <int> cmp(4, 7);
Compare <float> cmp(4.0, 7.0);
           

本文來源:https://blog.csdn.net/EmSoftEn/article/details/50421124

原文有一處錯誤 

T compare 寫成 Tcompare

繼續閱讀