1. 程式人生 > >C++自定義模板(函式模板、類模板)

C++自定義模板(函式模板、類模板)

C++提供兩種模板機制:函式模板、類模板

一、函式模板

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

2、函式模板定義形式 
template    < 型別形式引數表 >    
型別形式引數的形式為:
            typename T1 ,  typename T2 , …… , typename Tn 

或     class T1 ,  class T2 , …… , class Tn

3、

 myswap<float>(a, b);  //顯示型別呼叫

 myswap(a, b);        //自動資料型別推導  

4、函式模板與普通函式的區別:

函式模板不允許自動型別轉化,而普通函式能夠進行自動型別轉換。

二、類模板

1、類模板用於實現類所需資料的型別引數化 

     類模板在表示如陣列、表、圖等資料結構顯得特別重要,這些資料結構的表示和演算法不受所包含的元素型別的影響。