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
2
A
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
- 1. C++ modèles et déclarations de fonctions externes
- 2. Comment prévenir les surcharges?
- 3. python cProfil et modèles de profil ignorer les fonctions
- 4. C# Action et surcharges des paramètres Func
- 5. injection Constructor et les surcharges par défaut
- 6. Nommé? paramètres dans les modèles, fonctions
- 7. Méthode résolution des surcharges et de Jon énigmes Skeet
- 8. C++: Modèles pour les fonctions statiques?
- 9. 2 surcharges ont des conversions similaires
- 10. C# événements personnalisés avec Surcharges
- 11. Méta-programmation de modèles avec des pointeurs de fonctions membres?
- 12. Différence entre les surcharges Expression.Call?
- 13. Pourquoi utilisons-nous des modèles au lieu de fonctions?
- 14. BDD, tests unitaires et modèles de conception
- 15. Comment lier/grouper les surcharges dans les commentaires XML C#?
- 16. Modèles entièrement spécialisés et dllexport
- 17. Modèles, pointeurs de fonction et C++ 0x
- 18. Modèles de classes et de modèles d'usine en C++
- 19. Espaces de noms et modèles C++
- 20. Énumérations, surcharges constructeur avec conversions similaires
- 21. Classes d'amis et de modèles
- 22. Analyse et réflexion de modèles
- 23. boost :: fonctions thread et template
- 24. Utilisation de toutes les surcharges de la classe de base
- 25. méthodes virtuelles et classes de modèles
- 26. ICE GCC - syntaxe des fonctions alternatives, des modèles variadique et tuples
- 27. modèles et problème d'héritage!
- 28. Modèles et hiérarchie d'actions
- 29. styles et modèles
- 30. C++ Modèles et héritage