為什麼要使用類模板?
例項化後的兩個模板類復用了相同的資料結構演算法,但是卻可以操作不同型別的資料元素,這就是類模板的好處。
在c++的template中很多地方都用到了typename與class這兩個關鍵字,有時候這兩者可以替換,那麼這兩個關鍵字是否完全一樣呢?
事實上class用於定義類,在模板引入c++後,最初定義模板的方法為:template,這裡class關鍵字表明t是乙個型別,後來為了避免class在這兩個地方的使用可能給人帶來混淆,所以引入了typename這個關鍵字,它的作用同class一樣
表明後面的符號為乙個型別,這樣在定義模板的時候可以使用下面的方式了:
template.
在模板定義語法中關鍵字class與typename的作用完全一樣
區分類模板與模板類的概念
乙個類模板(類生成類)允許使用者為類定義個一種模式,使得類中的某些資料成員、預設成員函式的引數,某些成員函式的返回值,能夠取任意型別(包括系統預定義的和使用者自定義的)。
如果乙個類中的資料成員的資料型別不能確定,或者是某個成員函式的引數或返回值的型別不能確定,就必須將此類宣告為模板,它的存在不是代表乙個具體的、實際的類,而是代表一類類。
類模板定義:
定義乙個類模板,一般有兩方面的內容:
a、首先要定義乙個類,其格式為:
templateclass test
test為類名,在類定義體中,如果採用通用資料型別的成員,函式引數的前面需加上t,其中通用型別t可以作為普通成員變數的型別,還可以作為成員函式的引數和返回型別等。
templateclass test
test(t k);
~test(){}
void print();
t operator+(t x);
};
如果在類外定義成員函式,若此成員函式中有模板引數存在,則除了需要和一般類的類外定義成員函式一樣的定義外,還需要在函式外進行模板宣告
例如:
templatevoid test::print()
templatet test::operator+(t x)
關於類模板的使用:類模板的使用實際上是將類模板例項化成乙個具體的類,它的格式為:類名《實際的型別》
模板類是類模板例項化後的乙個產物,說個具體點的例子吧,我們把類模板比作是乙個做餅乾的模子,而模板類就是用這個模子做出來的餅乾,至於這個餅乾是什麼味道的就要看你自己在例項化時用的是什麼材料了,你可以做巧克力餅乾,也可以做牛奶餅乾,這些餅乾出了材料不一樣外,其它的東西都是一樣的了。
C 模板類和類模板
用相同的類模板可以組建任何型別的物件集合。在傳統c 中,可能有乙個浮點數類或者乙個整數類,如果使用類模板,可以定義乙個對兩者都適用的類number。類模板說明 類模板說明的一般形式是 template 型別形參表 class 類名 template 型別形參表 返回型別 類名 型別名錶 成員函式1 ...
C 類模板和模板類
類模板的意義和函式模板的意義是一樣的。template 宣告乙個模板,虛擬型別名為t。注意 這裡沒有分號。class compare 類模板名為compare t max t min 不能這樣定義類模板中的成員函式而 應當寫成類模板的形式 template tcompare max compare ...
C 類模板和模板類
1 c 的template中的很多地方typename與class這兩個關鍵字 template在模板定義語法中關鍵字class與typename的作用完全一樣 2 類模板和模板類的概念 1 乙個類模板 類生成類 允許使用者為類定義一種模式,使得類中的某些資料成員,預設成員函式的引數,某些成員函式的...