函式模板(泛型程式設計)

2021-10-01 14:10:47 字數 1839 閱讀 1142

函式模板就是將函式型別引數化,方便程式設計。

1、普通函式模板

#include

using namespace std;

template

//template是告訴編譯器,要開始泛型程式設計了,並用t替代函式的引數型別

void

myswap

(t& a, t& b)

template

//定義兩個泛型,其實定義乙個也可以因為都是 int型,但陣列是char型時就要兩個了,這裡舉例說明定義多個泛型

void

mysort

(t* a, t1 len)//}

}int

main()

;mysort

(aa,5)

; mysort<

int,

int>

(aa,5)

;//顯示呼叫,這裡就是給了原來函式引數的型別

int cc=

;mysort

(cc,5)

;}

2、類模板:類模板就是將類的屬性型別引數化,語法與函式模板差不多

//類模板是將類的屬性型別引數化,語法與函式模板差不多

#include

using namespace std;

template

//這裡告訴編譯器要進行泛型程式設計了,並用t替代類屬性的引數型別

class a

void

myprint()

private:

t a;};

class b :public a<

int>

//用到a的都要顯示呼叫,即用到模板類的地方都顯示呼叫,除了此類的內部

private:

int b;};

//模板類繼承模板類

template

class c :public a<

int>

private:

t c;};

void

use(a<

int>

& a)

//類做函式引數時,一樣的要顯示的定義形參,只要是泛型類,以後用到類時都要顯示的呼叫

intmain()

3、模板的綜合案例

//複數類綜合案例,類模板再類外部實現函式

#include

using namespace std;

template

class complex

;template

//有這句的都用t代替int

complex::

complex

(t a, t b)

template

complex complex

::operator+

(complex

& c2)

template

ostream& operator<<

(ostream& out, complex

& c3)

intmain()

//在模板類種,不要濫用友元函式,一般只有過載移位操作符時才用友元函式。

//static在類模板種的使用

#include

using namespace std;

template

class complex

;template

t complex

::a =1;

//注意static變數要在外部定義

intmain()

泛型程式設計 函式模板

當函式的業務邏輯相同但是函式的引數不相同時,讓型別引數化,讓程式設計師能夠方便程式設計,就用到了泛型程式設計。基本語法 includeusing namespace std 函式的業務邏輯一樣但是函式的引數不一樣 void myswap01 int a,int b void myswap02 cha...

C 泛型程式設計 函式模板 類模板

以前我們寫過乙個簡單的交換函式。我們不難發現交換函式是與型別有很大關係的,int,double.那麼如何實現乙個通用的交換函式呢?void swap int left,int right void swap double left,double right void swap char left,c...

C 泛型程式設計與函式模板

一 函式模板 1 定義 代表了乙個函式家族,該函式與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本。2 格式 template 但是建議使用 typename 避免和 class 類混淆 template 型別1變數1,型別2 變數2,返回型別 函式名 形參表 3 作用域 typed...