函式模板就像乙個框架,可以放入任意值。例如:
#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 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別...