Maison  >  Article  >  développement back-end  >  Pouvez-vous spécifier explicitement les paramètres d’un modèle lors de l’appel d’un constructeur en C ?

Pouvez-vous spécifier explicitement les paramètres d’un modèle lors de l’appel d’un constructeur en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-15 12:59:02534parcourir

Can You Explicitly Specify Template Parameters When Invoking a Constructor in C  ?

Spécification explicite des paramètres de modèle dans l'invocation du constructeur

Dans la programmation orientée objet utilisant C , un constructeur est une fonction membre spéciale qui initialise un objet. Bien que les constructeurs puissent être définis comme des modèles, permettant un comportement d'initialisation générique, il est souvent souhaitable de spécifier explicitement les paramètres du modèle lors de l'appel du constructeur.

Une classe appelée A sert d'exemple simple :

struct A {
   template<typename T>
   A() {}
};

Le code ci-dessus définit un constructeur de modèle qui accepte un type de données générique T. Cependant, lors de l'appel de ce constructeur, le compilateur s'appuie généralement sur la déduction de type à partir des arguments fournis. La question se pose : existe-t-il un moyen de spécifier explicitement les paramètres du modèle du constructeur ?

Malheureusement, la réponse est non. Selon la norme C 03, "il n'existe aucun moyen de fournir une liste d'arguments de modèle explicite pour ces modèles de fonctions". En effet, la liste d'arguments explicites du modèle suit le nom du modèle de fonction et les modèles de fonctions membres de conversion et les modèles de fonctions membres de constructeur sont appelés sans utiliser de nom de fonction.

Remarque : Ce comportement peut différer. dans les versions plus récentes de C . Consultez la norme ou la documentation de la version spécifique de C que vous utilisez pour vérifier.

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!

Déclaration:
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