本次引入類模板及其基本運算,為之後的乙個關於棧的應用做鋪墊。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是關鍵字,引數名列表 中可以有多個引數...
類模板的定義和使用
如同函式模板一樣,使用類模板使使用者可以為類定義一種模式,使得類中的某些資料成員 某些成員函式的引數 某些成員函式的返回值能取任意型別。類模板是對一批僅僅成員資料型別不同的類的抽象,程式設計師只要為這一批類所組成的整個類家族建立乙個類模板,給出一套程式 就可以用來生成多種具體的類,這類可以看作是類模...
類模板的定義和使用
如同函式模板一樣,使用類模板使使用者可以為類定義一種模式,使得類中的某些資料成員 某些成員函式的引數 某些成員函式的返回值能取任意型別。類模板是對一批僅僅成員資料型別不同的類的抽象,程式設計師只要為這一批類所組成的整個類家族建立乙個類模板,給出一套程式 就可以用來生成多種具體的類,這類可以看作是類模...