Type de retour et signature de fonction en C
En C , le type de retour d'une fonction n'est pas considéré comme faisant partie de sa signature pour les fonctions ordinaires , c'est-à-dire des fonctions qui ne sont pas des spécialisations de modèles de fonctions. Cela signifie que les fonctions portant le même nom et les mêmes types de paramètres peuvent être surchargées, même si elles ont des types de retour différents.
Signature des spécialisations des modèles de fonctions
Cependant, pour les fonctions Spécialisations de modèles, le type de retour est inclus dans la signature. En effet, la signature d'une spécialisation de modèle de fonction inclut la signature du modèle lui-même, ainsi que son type de retour et sa liste de paramètres de modèle.
Pourquoi ne fait-il pas partie de la signature de fonction ?
La raison pour laquelle le type de retour n'est pas considéré comme faisant partie de la signature de fonction pour les fonctions ordinaires n'est pas explicitement indiquée dans la norme C. Cependant, on peut en déduire que cela est dû au fait que la surcharge de fonction est principalement basée sur l'identifiant de la fonction et les types de paramètres.
Lorsque la surcharge est invalide
Malgré le type de retour ne faisant pas partie de la signature, le Standard interdit de surcharger une fonction avec un type de retour différent. Cela signifie que le code suivant entraînera une erreur de compilation dans les principaux compilateurs actuels :
int f(); double f(); // invalid
Conclusion
En C , le type de retour ne fait pas partie du signature des fonctions ordinaires mais est inclus dans la signature des spécialisations de modèles de fonctions. Cette distinction est importante à comprendre lors de la surcharge de fonctions et de l'utilisation de modèles de fonctions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!