c++通用模板類(template class)定義實現詳細介紹
有時,有兩個或多個類,其功能是相同的,僅僅是資料型別不同,如下面語句聲明瞭一個類:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Compare_int
{
public :
Compare( int a, int b)
{
x=a;
y=b;
}
int max(
)
{
return (x>y)?x:y;
}
int min(
) {
return (x<y)?x:y;}
private :
int x,y;
};
|
其作用是對兩個整數作比較,可以通過呼叫成員函式max和min得到兩個整數中的大者和小者。如果想對兩個浮點數(float型)作比較,需要另外宣告一個類:
1 2 3 4 5 6 7 8 9 10 11 12 |
class Compare_float
{
public :
Compare( float a, float b)
{x=a;y=b;} float max(
)
{ return (x>y)?x:y;}
float min(
)
{ return (x<y)?x:y;}
private :
float x,y;
}
|
顯然這基本上是重複性的工作,應該有辦法減少重複的工作。
C++在發展的後期增加了模板(template)的功能,提供瞭解決這類問題的途徑。可以宣告一個通用的類模板,它可以有一個或多個虛擬的型別引數,如對以上兩個類可以綜合寫出以下的類模板: