2
如果函數重載和模板服務的用途越來越少,那麼我們應該選擇哪一種模板或函數重載,以及相應的好處。模板和函數重載
如果函數重載和模板服務的用途越來越少,那麼我們應該選擇哪一種模板或函數重載,以及相應的好處。模板和函數重載
重載的功能,你必須明確地寫出每個重載:
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; }