2010-06-06 11 views
2

Si la surcharge de fonction et les modèles servent plus le même objectif, alors pourquoi utiliser des modèles ou une surcharge de fonction et quels sont les avantages correspondants.Modèles et surcharges de fonctions

Répondre

6

Avec les fonctions surchargées, vous devez écrire explicitement chaque surcharge:

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. 

Ceci est fastidieux, mais peut être bénéfique si le corps de la fonction doit être différent en fonction du type.

Les modèles sont agréables lorsque le même code source peut être utilisé pour n'importe quel type. Vous spécifiez le modèle et le compilateur génère les extensions selon vos besoins:

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