1. 程式人生 > >C++學習之模板篇(類模板)

C++學習之模板篇(類模板)

1.為什麼要有類模板?

是因為在很多使用場合下,一個類會被使用很多次,用的時候呢也發現很多重複的地方,只有它的資料型別不同,這個時候就要用到類模板。

2.單引數類模板形式

(1)宣告形式

單引數類模板形式如下,可見與函式模板比較,宣告模板的方式相同,都是使用template<class T>,不同的是函式模板是引數中會使用型別T,而類模板是是資料成員會使用型別T,


需要注意的是類模板中成員函式的宣告,可以直接將定義寫在類裡面,即類的大括弧以內,也可以寫到類外,但注意寫到類外的形式:每一個成員函式必須先寫上template<class T>這句話,然後在類名後面用尖括弧寫上類模板引數型別T,記住是每一個成員函式必須都先寫上template<class T> 這句話。


(2)使用形式:如果想宣告一個物件,必須在類名的後面用尖括弧指出類的物件中是什麼資料型別。與函式模板一樣,類模板本身不會產生任何實際性的程式碼,只有當例項化一個物件時,在類的後面寫上具體的引數型別,如MyArray<int> arr,這個時候才會產生出一套程式碼,這套程式碼我們稱之為模板類。


多引數的類模板形式(引數可以是型別也可以是變數):

(1)宣告形式


(2)成員函式類外定義形式

注意在每一個成員函式定義的前面都要先加上template<typename T, int KSize>這句話。


(3)使用形式


3.特別提醒

我們必須把類模板的宣告和定義的所有程式碼都寫在.h標頭檔案中,使用的時候通過include全部包含進去,只有這樣編譯才會通過。