比較大小的函式模板
阿新 • • 發佈:2019-01-29
函式模板不是直接執行的程式,而是執行後通過編譯器進行轉換,轉換成模板函式進行實現
但是以上模板只能比較兩個相同型別的大小,下面稍微改動即可實現兩個不同型別的數值比較
#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; }