C++函數模闆
函數模闆就像一個架構,可以放入任意值。例如:
#include <bits/stdc++.h>
using namespace std;
template <class type>
type sum(type a, type b)
{
return a + b;
}
調用時type會自動填充類型,像是這樣調用:
傳回22(int)。或是這樣:
傳回46.9(float/double)。從這些例子裡可以看出:
sum函數無論兩個參數是神馬類型,都能自動填充type,讓代碼複用性增高。
還有一點,就是如果運作:
會報錯,因為在定義中a和b參數類型是同一個類型——type,是以它會顯示int型不能和double型相加!
一種是改變模闆,讓他适應兩種類型:
template <class c1, class c2>
//...
另一種就是調用代碼中,進行強制轉型或1.0 * (int變float/double)。
既然都能1.0 * xxx了,何苦不加個".0"讓Ta本身就是float/double?
也可以!
結果都一樣:
編譯成功
35.3
代碼運作結束
别忘了輸出,還有注意一點!
sum函數被填充後,此時type是float/double類型,切記!傳回值是float/double類型!傳回值是float/double類型!傳回值是float/double類型!(重要的事情說三遍)
完
附錄
别忘了給作者三連!