C 函式模板

2021-10-14 09:29:11 字數 1515 閱讀 3892

函式模板就像乙個框架,可以放入任意值。例如:

#include

using

namespace std;

template

<

class

type

>

type sum

(type a, type b)

呼叫時type會自動填充型別,像是這樣呼叫:

sum(12

,10)

返回22(int)。或是這樣:

sum

(12.34

,34.56

)

返回46.9(float/double)。從這些例子裡可以看出:

sum函式無論兩個引數是神馬型別,都能自動填充type,讓**復用性增高

還有一點,就是如果執行:

sum(12

,23.3

)

會報錯,因為在定義中a和b引數型別是同乙個型別——type,所以它會顯示int型不能和double型相加

一種是改變模板,讓他適應兩種型別:

template

<

classc1,

class

c2>

//...

另一種就是呼叫**中,進行強制轉型1.0 * (int變float/double)

sum

(double(12

),23.3

)

sum((

double)12

,23.3

)

sum

(1.0*12

,23.3

)

既然都能1.0 * ***了,何苦不加個".0"讓ta本身就是float/double?

sum

(12.0

,23.3

)

也可以!

結果都一樣:

編譯成功

35.3

**執行結束

別忘了輸出,還有注意一點!

sum函式被填充後,此時type是float/double型別,切記!返回值是float/double型別!返回值是float/double型別!返回值是float/double型別!(重要的事情說三遍)

附錄別忘了給作者三連!

c 函式模板

include using namespace std template t max t a,t b,t c int main int main int i1 185,i2 76,i3 567,i double d1 56.63,d2 90.23,d3 3214.78,d long g1 67854...

c 函式模板

關鍵字template總是放在模板的電腦關於與宣告的最前面,關鍵字後面是用逗號分隔的模板參數列,該列表是模板參數列,不能為空。模板引數可以是乙個模板型別引數,它代表了一種型別 也可以是乙個模板非型別引數,它代表了乙個常量表示式。模板型別引數由關鍵字class或typename後加乙個識別符號構成。在...

C 函式模板

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