[函數] 函數樣板

函數樣板
省去因為型態問題
而再次宣告的麻煩
讓我們學習如何撰寫

函數樣板
是泛型函數的描述
也就是說
以型態定義函數

因為樣板是以泛型型態
而非特定型態來進行程式設計
所以稱為泛型程式設計

因為型態以參數表示
樣板的特性又稱為參數化型態

如果我們預先寫出了交換int型態的函數:

[code language=”cpp”]
#include <iostream>
using namespace std;

void change(int &,int &);

int main(){

int s1=5,s2=10;

cout << "s1=" << s1 << " s2=" << s2 << endl;

change(s1,s2);

cout << "s1=" << s1 << " s2=" << s2 << endl;

}

void change(int &a,int &b){

int temp;

temp=a;
a=b;
b=temp;

}
[/code]

如果要改成交換double型態

手動處理的話

就必須要一個一個將int改成double

會是一件很麻煩的事情

而且很容易出錯

那將來如果交換float型態、char型態值呢?

因此出現了函數樣板

方便程式設計者更有效率的撰寫

 

宣告

template <typename 自訂型態名稱>

void 函數名稱 (自訂型態名稱 參數1,自訂型態名稱 參數2…){

………

}

Ex:

更改上面範例變成函數樣板

[code language=”cpp”]
#include &lt;iostream&gt;
using namespace std;

template &lt;typename mytype&gt; //函數樣板宣告
void change(mytype &amp;a,mytype &amp;b){ //函數原型宣告、定義

mytype temp;

temp=a;
a=b;
b=temp;

}

int main(){

int s1=5,s2=10;

cout &lt;&lt; "s1=" &lt;&lt; s1 &lt;&lt; " s2=" &lt;&lt; s2 &lt;&lt; endl;

change(s1,s2); //交換int型態變數

cout &lt;&lt; "s1=" &lt;&lt; s1 &lt;&lt; " s2=" &lt;&lt; s2 &lt;&lt; endl;

double p1=5.4,p2=10.67;

cout &lt;&lt; "p1=" &lt;&lt; p1 &lt;&lt; " p2=" &lt;&lt; p2 &lt;&lt; endl;

change(p1,p2); ////交換double型態變數

cout &lt;&lt; "p1=" &lt;&lt; p1 &lt;&lt; " p2=" &lt;&lt; p2 &lt;&lt;span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"&gt;&lt;/span&gt;&lt; endl;

}
[/code]

有疑問? 留個言吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料