void sum(int , int);
這樣寫的話可以將整數相加,若是同樣的用法要將兩個double(也就是浮點數)相加的時候,還要再寫一個版本給浮點數使用,這種情況可以運用function template來解決
先宣告function template: 大寫 T可代表任意型態的變數
template <class T> void sum(T , T);
在程式碼實作的部分
void sum(T a, T b) {
cout << a+b;
}
下列是完整的程式:
#include <iostream>
using namespace std;
template <class T> void sum(T, T);
int main() {
int a=1, b=2;
double c=1.1, d=2.2;
sum(a, b) ;
sum(c, d) ;
return 0;
}
template <class T> void sum(T a, T b) {
cout << a+b<<"\n";
}
接下來要介紹(Overloaded Templates)多載化的模板
如果sum()這個函式的名字不變,但傳入的參數改為三個,
那麼這種情形便稱作多載,多載化的版本也是要先宣告template,然後在實做出來.
請注意紅色字的部分是新增出來的多載化的程式碼.
#include <iostream>
using namespace std;
template <class T> void sum(T, T);
template <class T> void sum(T, T, T);
int main() {
int a=1, b=2;
double c=1.1, d=2.2 ,e=3.3;
sum(a, b) ;//3
sum(c, d) ;//3.3
sum(c, d, e)//6.6 ;
return 0;
}
template <class T> void sum(T a, T b) {
cout << a+b<<"\n";
}
template <class T> void sum(T a, T b, T c){
cout << a+b+c<<"\n";
}
沒有留言:
張貼留言