1. 程式人生 > >比較大小的函式模板

比較大小的函式模板

函式模板不是直接執行的程式,而是執行後通過編譯器進行轉換,轉換成模板函式進行實現
#include<iostream>
using namespace std;
template<typename type>//函式模板
type Max(type a,type b)
{
	cout<<typeid(type).name()<<endl;//進行引數的推演,並輸出引數
	return a > b ? a : b;
}
void main()
{
	cout<<"Max = "<<Max(5.55,99.99)<<endl;
	//cout<<"Max = "<<Max(5.55,99)<<endl;程式不能正常執行,因為type產生二義性,即函式模板不能進行隱式轉換
	cout<<"Max = "<<Max<int>(5.55,4)<<endl;//解決二義性的方法
}

但是以上模板只能比較兩個相同型別的大小,下面稍微改動即可實現兩個不同型別的數值比較
#include<iostream>
using namespace std;
template<typename type1,typename type2>//函式模板
type1 Max(type1 a,type2 b)
{
	return a > b ? a : b;
}
void main()
{
	cout<<"Max = "<<Max(5.5,'a')<<endl;
}