C 模板template的使用

2021-10-03 14:59:07 字數 1524 閱讀 5810

模板是一種對型別進行引數化的工具;

通常有兩種形式:函式模板和類模板;

函式模板針對僅引數型別不同的函式;

類模板針對僅資料成員和成員函式型別不同的類。

使用模板的目的就是能夠讓程式設計師編寫與型別無關的**。比如編寫了乙個交換兩個整型int 型別的swap函式,這個函式就只能實現int 型,對double,字元這些型別無法實現,要實現這些型別的交換就要重新編寫另乙個swap函式。使用模板的目的就是要讓這程式的實現與型別無關,比如乙個swap模板函式,即可以實現int 型,又可以實現double型的交換。模板可以應用於函式和類。

模板的兩種宣告方式:templatetemplate

注意:模板的宣告或定義只能在全域性,命名空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在main函式中宣告或定義乙個模板。

template 返回型別 函式名(引數列表)

#include using namespace std;

templatevoid swap(t& a,t& b)

int main()

我們需要乙個函式來做加法運算又或者我們需要自己實現print函式,那怎麼處理傳入引數不同(double ? int ? char ? short ? string ?)的情況呢? 函式過載要寫多個函式不利於擴充套件,故可利用模板!

template //先宣告模板引數 t

typename t add(const t &num1, const t &num2)//定義模板函式,注意引數的型別

int main()

template//模板形參表

class 類模板名

;

例:在類裡有求私有成員中的最大值和最小值的兩個公有成員

//不用類模板(只能用於比較乙個型別【整型】的大小)

class compare

int max()//求較大值

int min()//求較小值

type max()

type min()

1.當子類繼承的父類是乙個類模板時,子類在宣告的時候要指定出父類中的型別;

2.如果不指定,編譯器無法給子類分配記憶體;

3.如果要靈活指定父類中的t的型別,子類也需要變成模板類;

#include#includeusing namespace std;

templateclass base ;

class son1 :public base;

templateclass son2 :public base

t2 obj;

};int main()

C 模板template的使用

1.類模板,同意使用者為類定義一種模式,使得類中的某些資料成員,某些成員函式的引數,某些成員函式的返回值,能夠取隨意型別 包括系統提前定義的和使用者自己定義的 假設乙個類中資料成員的資料型別不能確定,或者是某個成員函式的引數或返回值的型別不能確定,就必須將此類宣告為模板,它的存在不是代表乙個詳細的,...

C 模板template的使用

模板是c 支援引數化多型的工具,使用模板可以使使用者為類或者函式宣告一種一般模式,使得類中的某些資料成員或者成員函式的引數 返回值取得任意型別。使用模板的目的就是能夠讓程式設計師編寫與型別無關的 通常有兩種形式 函式模板和類模板 一 函式模板 函式模板 針對僅引數型別不同的函式,使用函式模板可以使函...

C 模板 template 使用介紹

1.模板的概念。我們已經學過過載 overloading 對過載函式而言,c 的檢查機制能通過函式引數的不同及所屬類的不同。正確的呼叫過載函式。例如,為求兩個數的最大值,我們定義max 函式需要對不同的資料型別分別定義不同過載 overload 版本。函式1.int max int x,int y ...