Le type de retour est-il inclus dans la signature de la fonction et permet-il la surcharge avec uniquement des modifications du type de retour ?
En C , il y a une distinction entre les déclarations de fonction et les entités de fonction. Les déclarations peuvent établir des entités de fonction ou des entités modèles. Pour les déclarations de fonctions non-modèles, la signature englobe les types d'arguments, les informations d'appartenance à la classe (le cas échéant) et les qualificatifs. Cependant, pour les spécialisations de modèles de fonctions, la signature englobe également le type de retour.
Signature de fonction pour les spécialisations de fonctions
La norme C stipule que pour les spécialisations de modèles de fonctions, la signature implique le type de retour, comme souligné dans la section 14.5.5.1. Cela englobe la signature du modèle et les arguments du modèle fournis. Ceci est conforme à la compréhension selon laquelle le type de retour contribue au type d'une fonction.
Surcharge avec des types de retour différenciés
Selon la norme, les déclarations de fonction avec différents types de retour sont considérés comme distincts en termes de surcharge (section 13.1). Cependant, la définition de « diffère uniquement par le type de retour » reste non spécifiée dans le langage.
Comportement du compilateur
Actuellement, les principaux compilateurs rejettent les déclarations de fonction avec des signatures identiques mais différentes types de retour (par exemple, "int f();", "double f();"). Cependant, ce comportement n'est pas nécessairement exigé par la norme.
Proposition préliminaire C 0x
Les spécifications provisoires C 0x récentes fournissent une définition plus complète de la « signature » dans section 1.3.11, incluant explicitement le type de retour pour les entités de fonction et les spécialisations de modèles. Cela coïncide avec l'affirmation selon laquelle le type de retour fait partie intégrante du type de la fonction.
Par conséquent, en résumé :
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!