函式模板就是將函式型別引數化,方便程式設計。
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...