2010-06-06 108 views
2

如果函數重載和模板服務的用途越來越少,那麼我們應該選擇哪一種模板或函數重載,以及相應的好處。模板和函數重載

回答

6

重載的功能,你必須明確地寫出每個重載:

int max(int x, int y) { return x > y ? x : y; } 
long max(long x, long y) { return x > y ? x : y; } 
char max(char x, char y) { return x > y ? x : y; } 
// etc. 

這是乏味的,但如果函數體需要根據類型不同可能是有益的。

當相同的源代碼可用於任何類型時,模板很不錯。指定模式,編譯器根據需要生成擴展:

// Can be used with any type that supports ">". 
template<typename T> T max(T x, T y) { return x > y ? x : y; }