模板是泛型程式設計的基礎。所謂泛型程式設計就是編寫與型別無關的邏輯**,是一種復用的方式。模板分為函式模板和類模板。
函式模板:建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表,這個通用函式就稱為函式模板。
一般形式:
template
<
typename
t>
通用函式定義
注意:關鍵字
typename
是型別名,只適用於函式體相同、函式的引數個數相同而型別不同的情況。
函式模板格式:
template
形參名1
, class
形參名2,
class
形參名n>
返回型別 函式名(引數列表)
模板形參的定義既可以使用class,也可以使用typename,含義是相同的。
例1:用函式模板實現求3
個數中的最大者。
程式:#include
using namespace std;
template//模板宣告,t為型別引數
t max(t a, t b, t c)//定義乙個通用函式,t作虛擬型別名
int main()
結果:i_max=12
d_max=56.7
g_max=673456
請按任意鍵繼續. . .
類模板:
類模板是類的抽象,類是類模板的例項
在類模板內定義:
類模板名<
實際型別名
>
物件名;
類模板名<
實際型別名
>
物件名(實參表);
在類模板外定義成員函式:
template虛擬型別引數
>
函式型別 類模板名<
虛擬型別引數
>
::成員函式名(函式形參表)
如:template
<
class
numtype
>
numtype
compare<
numtype
>::max()
例2:宣告乙個類模板,利用它分別實現兩個整數、浮點數和字元的比較,求出大數和小數。
程式:#include
using namespace std;
template//類模板宣告,虛擬型別名為numtype
class compare//類模板名為compare
;int main()
結果:7 is the maximum of two integer numbers.
3 is the minimum of two integer numbers.
77.1 is the maximum of two integer numbers.
3.5 is the minimum of two integer numbers.
a is the maximum of two integer numbers.
a is the minimum of two integer numbers.
請按任意鍵繼續. . .
優點:
模板復用了**,節省資源,更快的迭代開發,c++的標準模板庫(stl)因此而產生。缺點:增強了**的靈活性。
模板讓**變得凌亂複雜,不易維護,編譯**時間變長。出現模板編譯錯誤時,錯誤資訊非常凌亂,不易定位錯誤。
本文出自 「巖梟」 部落格,請務必保留此出處
類模板,模板類和函式模板,模板函式
單整數類 雙整數類 所以c艹跟其他強型別語言為我們提供了乙個所謂模版功能 變數型別 整數 類模板的重點是模板。表示的是乙個模板,專門用於產生類的模子。例子 1 template 2 class vector 3 使用這個vector模板就可以產生很多的class 類 vector vector ve...
函式模板 和類模板
還是例子說話。函式模板 templatemax const t a,const t b 這樣用 int int a 1,b 2 max a,b float float c 1.0f,d 2.0f max c,d double double e 1.0,f 2.0 max e,f 類模板 templa...
函式模板和類模板
1 函式模板 template 形參名,class 形參名,返回型別 函式名 引數列表 其中template和 class 是關鍵字,class 可以用typename 關見字代替,在這裡 typename 和class 沒區別,括號中的引數叫模板形參,模板形參和函式形參很相像,模板形參不能為空。一...