C 函式模板與類模板

2021-09-24 15:19:14 字數 1348 閱讀 3084

一、函式模板

1、函式模板:建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬型別來代表這個通用函式來代表。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別來取代模板中虛擬的型別,從而實現不同函式的功能。

作用:功能相同而資料型別不同的一些函式,不必一一定義各個函式,通過定義乙個可以對任何型別變數操作的模板函式,在呼叫函式時,系統會根據實參的型別,取代函式模板中的型別引數,得到具體的函式。

2、函式模板的一般形式

template

template

template 的含義是「模板」,尖括號中 typename(或class)是關鍵字,t是乙個型別引數(虛擬的型別名)。 typename和class的作用相同,都是表示「型別名」,二者可以互換。

3、適用範圍

函式模板比函式過載更方便,程式更簡潔,但是它只適用於函式體相同、函式的引數個數相同而型別不同的情況。如果函式引數的個數不同,則不能用函式模板。

4、應用舉例

#includetemplate //模板宣告,其中t為型別引數

t max(t a,t b,t c) //定義乙個通用函式,用t作為虛擬函的型別名

//使用方法

int main()

二、類模板

1、類模板的一般形式

template<class型別引數名》

template 是模板,template後面尖括號內的內容為模板的參數列,class表示其後面的是型別引數,型別引數名可以任意取。

類模板例項化:

類模板名《實際型別名》 物件名(參數列);

2、特點:由於模板包含型別引數,因此又稱為引數化表,模板是類的抽象,類是模板的例項。利用模板可以建立包含各種資料型別的類。

3、應用舉例

宣告乙個類模板,利用它實現兩個整數的比較

template //宣告類模板,虛擬型別名為numtype

class compare //類模板名為compare

numtype max() //函式型別暫定為numtype

numtype min()

類模板中成員函式在類模板內定義,不能用一般類成員函式的形式。應按照以下形式

template//表示是類模板

numtype compare ::max() //numtype是虛擬型別名,compare 表示帶引數的類

C 函式模板與類模板

由菜鳥網整理總結,整理文章 作者做的任務只是將知識點簡化更供人理解以及加了一些自己的認知。模版可以理解成把資料型別做成可以設定的引數化,然後在定義的時候套用,讓資料型別可以隨意變換。使用模板的目的就是能夠讓程式設計師編寫與型別無關的 比如編寫了乙個交換兩個整型int 型別的swap函式,這個函式就只...

C 函式模板與類模板

泛型程式設計 編寫與型別無關的通用 是 復用的一種手段。模板是泛型程式設計的基礎.模板 函式模板 類模板 1.函式模板概念 函式模板代表了乙個函式家族,該函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本。2.函式模板格式 template typename t1,typena...

C 函式模板與類模板

函式模板是統用的函式描述,其使用泛型定義函式,其中泛型可被具體型別 如 int double 替換。呼叫模板函式,可以使用自動型別推導或顯式指定型別。語法 template ret type func parameter list 注意事項 示例 1 下面的 定義了乙個myswap函式模板,可以交換...