函式過載與函式模板
在我們要實現類似的函式功能時,但他們的資料型別或者個數不一樣,這時就需要用到函式過載
求3個數中最大的數(分別考慮整數、雙精度數、長整數的情況)。 #
include
using namespace std;
int main( )
int max(int a,int b,int c) //定義求3個整數中的最大者的函式
double max(double a,double b,double c) //定義求3個雙精度數中的最大者的函式
long max(long a,long b,long c) //定義求3個長整數中的最大者的函式
而函式模板的就是函式的型別名以及他的形參型別不確定,這時可以用到函式模板,例如 #
include
using namespace std;
template//模板宣告,其中
t為型別引數
t max(t a,t b,t c) //定義乙個通用函式,用
t作虛擬的型別名
int main( )
{ int i1=185,i2=-76,i3=567,i;
double d1=56.87,d2=90.23,d3=-3214.78,d;
long g1=67854,g2=-912456,g3=673456,g;
i=max(i1,i2,i3); //呼叫模板函式,此時t被
int取代
d=max(d1,d2,d3); //呼叫模板函式,此時t被
double
取代g=max(g1,g2,g3); //呼叫模板函式,此時t被
long
取代cout<<″i_max=″<
cout<<″f_max=″<
cout<<″g_max=″<
return 0;
模板上面的形參型別就用了乙個字母t來表示,他可以代替任何資料型別,函式模板看起來是不是比函式過載簡單多了,對因為函式模板省去了不同型別的過載函式的**,看起來就簡潔了,但是如果函式形參個數不一樣時就不能用到函式模板了,只能用函式過載。
函式的過載與函式模板
有時候想要實現幾個功能相近,但只是處理的引數型別不同的函式,在c語言裡我們要把這些函式起上不同的名字,而在c 裡我們可以把這些函式都給上乙個函式名只需要把不同的引數給入函式就可以了,這樣大大的減少了函式名的數量,增強了 的可讀性。c 中這叫做函式的過載,是在同一作用域內宣告幾個功能類似的同名函式,但...
函式模板及函式過載
問題描述 編寫乙個函式模版,能夠處理整數 實數 串類物件的大小比較,返回兩個值中的最小者。為了能夠處理字元陣列儲存的字串的大小比較,則需要使用函式過載的形式。為了能夠處理串類物件的大小比較,則需要對串類實現關係運算子 或 的過載。主函式如下,請勿修改 int main string string c...
函式過載和函式模板
要求 1 函式名相同 2 引數不同 型別,個數或順序 但注意 認為這些型別相同 int a和int a 呼叫時都寫成f a int a和int a 呼叫函式時輸入的東西相同 不能以形參名,返回值作為區分。include using namespace std void out int a void ...