函式模板和類模板的定義和使用

2021-07-12 04:21:17 字數 1851 閱讀 7015

模板是泛型程式設計的基礎。所謂泛型程式設計就是編寫與型別無關的邏輯**,是一種復用的方式。模板分為函式模板和類模板。

函式模板:建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表,這個通用函式就稱為函式模板。

一般形式:

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 沒區別,括號中的引數叫模板形參,模板形參和函式形參很相像,模板形參不能為空。一...