Il augmente la facilité de maintenance. Si vous avez un type T et que vous appelez une fonction, alors vous avez besoin de changer de T, si la fonction a été surchargé pour le nouveau T ensuite, vous pouvez recompiler instantanément. En C, vous auriez à revenir en arrière et de creuser à travers tous les sites d'appel et de modifier la fonction appelée. Prendre sqrt(). Si vous voulez sqrt() float, alors vous devez changer de sqrtf().
Pas seulement ça, mais le volume et la complexité de C++de type de système est beaucoup plus qu'en C, et d'avoir à séparer les noms de fonction pour chaque surcharge épuiser rapidement le bassin raisonnable de noms de fonctions qui servent le même but, mais prendre des arguments différents, parce que maintenant il y a beaucoup plus d'arguments à prendre.
Par exemple, comparer le C et le C++ bibliothèques de chaînes de caractères. La chaîne C de la bibliothèque propose une méthode pour ajouter une chaîne à l' - strcat(). C++std::string::append a huit surcharges. Que voulez-vous appeler? append_a, append_b, etc? C'est ridicule - ils servent tous la même fonction, dans différentes manières.
Edit: Il est effectivement utile de mentionner que, append
est un très mauvais exemple, de nombreux de la chaîne C++ surcharges sont très redondants. Cependant, c'est le cas plus général que cela et pas tous de ces surcharges redondant.