類模板與模板類的概念
1. 什麼是類模板
乙個類模板(也稱為類屬類或類生成類)同意使用者為類定義一種模式。使得類中的某些資料成員、默寫成員函式的引數、某些成員函式的返回值,能夠取隨意型別(包含系統提前定義的和使用者自己定義的)。
2. 類模板定義
定義乙個類模板,一般有雙方面的內容:
a. 首先要定義類,其格式為:
template t>
class
foo
foo為類名,在類定義體中,如採用通用資料型別的成員,函式引數的前面需加上t。
通用型別 t 能夠作為普通成員變數的型別,還能夠作為const和static成員變數,以及成員函式的引數和返回型別。
比如:
templateclass test
test(t k);
~test(){}
void print();
t operator+(t x);
};
b. 在類定義體外定義成員函式時:若此成員函式中有模板引數存在,則除了須要和一般類的體外定義成員函式一樣的定義外,還需在函式體外進行模板宣告。比如:
templatet>
void test
::print()
假設函式是以通用型別為返回型別,則要在函式名前的類名字尾上「」。比如:
templatet>
test
::test(t k):i(k)
templatet>
ttest
::operator+(t x)
c. 在類定義體外初始化const成員和static成員變數的做法:和普通類體外初始化const成員和static成員變數的做法基本一樣,唯一的差別是需再對模板進行宣告,比如
templatet>
int test
::cnt=
0; templatet>
test
::test(t k):i(k)
3. 類模板的使用
類模板的使用實際上是將類模板例項化成乙個詳細的類。它的格式為:類名《實際的型別》。
模板類是類模板例項化後的乙個產物。說個形象點的樣例吧。
我把類模板比作乙個做餅乾的模子,而模板類就是用這個模子做出來的餅乾,至於這個餅乾是什麼味道的就要看你自己在例項化時用的是什麼材料了,你能夠做巧克力餅乾,也能夠做豆沙餅幹,這些餅乾的除了材料不一樣外,其它的東西都是一樣的了。
C 中 模板Template的使用
1 在c template中很多地方都用到了typename與class這兩個關鍵字,而且好像可以替換,是不是這兩個關鍵字完全一樣呢?答 class用於定義類,在模板引入c 後,最初定義模板的方法為 template,這裡class關鍵字表明t是乙個型別,後來為了避免class在這兩個地方的使用可能...
C 模板template的使用
1.類模板,同意使用者為類定義一種模式,使得類中的某些資料成員,某些成員函式的引數,某些成員函式的返回值,能夠取隨意型別 包括系統提前定義的和使用者自己定義的 假設乙個類中資料成員的資料型別不能確定,或者是某個成員函式的引數或返回值的型別不能確定,就必須將此類宣告為模板,它的存在不是代表乙個詳細的,...
C 模板template的使用
模板是一種對型別進行引數化的工具 通常有兩種形式 函式模板和類模板 函式模板針對僅引數型別不同的函式 類模板針對僅資料成員和成員函式型別不同的類。使用模板的目的就是能夠讓程式設計師編寫與型別無關的 比如編寫了乙個交換兩個整型int 型別的swap函式,這個函式就只能實現int 型,對double,字...