類模板的定義及其使用

2021-07-10 18:23:35 字數 1744 閱讀 5351

本次引入類模板及其基本運算,為之後的乙個關於棧的應用做鋪墊。

1.類模板的定義

可用類模板來定義類,類模板是物件特性更為一般的抽象。簡而言之,乙個類模板就是乙個抽象的類、類模板的一般定義形式為:

template《引數名列表》

class 類名;

其中,template是關鍵字,《引數名列表》中可以有多個引數,多個模板引數之間用逗號分隔。模板引數的形式可以是:

class

《識別符號》 或 型別表示式《識別符號》

如,可定義座標點的類模板如下:

template //帶引數t的類模板說明

class point;

2**.類模板的使用**:

使用上述模板定義物件iobj,並以int替換引數t:

point iobj(3,4);  //該物件產生乙個int型的點(3,4)
使用該模板再產生乙個例項:

pointdobj(7.8,8.8);     //該物件產生乙個double型的座標點(7.8,8.8)
由此可見,使用類模板可以宣告不同型別的物件。對於乙個可能用到多種資料型別的類來說,使用類模板可以大大提高程式設計的效率。簡單地說,如果你需要int型的資料,就用int來替換引數模板中的t,需要double型的資料就用double來替換引數模板中的t。

以下**給出了乙個用類模板來描述座標點的例子:

#include

#include

//the declaration of

class template

template

t>

class

point;

//the implementation of class template point

templatet>

point

::point

(ta,t

b):x(a),y(b){}

templatet>

point

::point

(point& a)

templatet>

tpoint

::distance

(point& a)

//main function

int main()

{ using namespace std; //learn the meaning of "namespace" from 《c++ primer》

point

a1(3,4),a2(5,6);

cout<<"the distance of these two points(int): "(a2)

b1(7.8,9.8),b2(34.8,25.4);

cout<<"the distance of these two points(double): "(b2)

<

顯然,使用類模板能使得我們在處理需要多種資料型別的類時游刃有餘,從上述程式中我們也很容易發現類模板與普通的類之間的差別。其實,只要去掉類模板的宣告,並將t換成我們所需要的資料型別,再做些微小的改動就成為了乙個普通的類。認識到這一點,對類模板的理解就會更加深刻。

類模板的定義及其使用

本次引入類模板及其基本運算,為之後的乙個關於棧的應用做鋪墊。1.類模板的定義 可用類模板來定義類,類模板是物件特性更為一般的抽象。簡而言之,乙個類模板就是乙個抽象的類 類模板的一般定義形式為 template 引數名列表 class 類名 其中,template是關鍵字,引數名列表 中可以有多個引數...

類模板的定義和使用

如同函式模板一樣,使用類模板使使用者可以為類定義一種模式,使得類中的某些資料成員 某些成員函式的引數 某些成員函式的返回值能取任意型別。類模板是對一批僅僅成員資料型別不同的類的抽象,程式設計師只要為這一批類所組成的整個類家族建立乙個類模板,給出一套程式 就可以用來生成多種具體的類,這類可以看作是類模...

類模板的定義和使用

如同函式模板一樣,使用類模板使使用者可以為類定義一種模式,使得類中的某些資料成員 某些成員函式的引數 某些成員函式的返回值能取任意型別。類模板是對一批僅僅成員資料型別不同的類的抽象,程式設計師只要為這一批類所組成的整個類家族建立乙個類模板,給出一套程式 就可以用來生成多種具體的類,這類可以看作是類模...