Maison > développement back-end > C++ > Comment C déduit-il la taille du tableau dans les modèles de fonctions ?

Comment C déduit-il la taille du tableau dans les modèles de fonctions ?

Barbara Streisand
Libérer: 2024-11-28 17:15:17
original
829 Les gens l'ont consulté

How Does C   Deduce Array Size in Function Templates?

Déduction de la taille du tableau dans les modèles de fonctions

Dans le code C fourni, un modèle de fonction nommé cal_size est déclaré pour accepter un tableau comme argument. Le modèle de fonction déduit la taille du tableau à partir du type d'argument et l'imprime.

La question se pose : comment le paramètre du modèle N est-il automatiquement initialisé à la bonne taille du tableau sans le spécifier explicitement dans la fonction appeler ?

Déduction d'argument de modèle

La clé pour comprendre ce comportement réside dans le processus de déduction d'argument de modèle. Lorsqu'une fonction modèle est appelée, le compilateur utilise le type réel de l'argument pour déduire les valeurs des paramètres du modèle.

Dans le cas de cal_size, le type d'argument est un tableau d'éléments de type T avec un taille spécifiée N. Le compilateur déduit T du type d'élément du tableau et N de la taille du tableau.

Lorsque l'argument a est passé à la fonction, le compilateur déduit T comme int et N comme 6. De même, lorsque b est passé, T est int et N est 1.

Spécialisation du modèle de fonction

Sur la base des valeurs déduites de T et N, le compilateur génère versions distinctes et spécialisées du modèle de fonction. Pour chaque appel, une fonction spécialisée est créée avec les informations spécifiques de type et de taille du tableau d'arguments.

Dans ce cas particulier, deux fonctions spécialisées sont générées :

  • cal_size_int_6 pour int [6] tableaux
  • cal_size_int_1 pour les tableaux int[1]

Le la fonction principale se traduit essentiellement par l'appel de ces fonctions spécialisées.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal