Contenu du cours
Modèles C++
Modèles C++
Comment Utiliser la Spécialisation de Template
Syntaxe de la spécialisation de modèle
Pour comprendre comment fonctionne la spécialisation de modèle, nous devons d'abord saisir ce qui se passe en coulisses lorsqu'un modèle est appelé avec un type de données spécifique.
Lorsque vous appelez une fonction modèle avec un type particulier, le compilateur génère une instance concrète du modèle pour ce type. Ce processus est appelé instanciation de modèle. Essentiellement, le compilateur substitue le paramètre du modèle par le type fourni et crée une version spécialisée de la fonction.
main
header
#include <iostream> template<typename T> T TemplateFunction(T value) { return value; } int main() { // When the compiler encounters this line // It generates a function for the specified type // VVV TemplateFunction<int>(5); }
Mais d'abord, il vérifie si une substitution pour cette fonction existe déjà. Il n'y a aucun intérêt à générer plusieurs instances de cette fonction si elle est appelée avec le même type à plusieurs reprises. Avec cette connaissance, nous pouvons l'utiliser à nos fins.
Swipe to start coding
Créez une spécialisation de modèle pour le TemplateFunction
qui gère les types de données std::string
.
- Implémentez une spécialisation pour
TemplateFunction
afin de traiter les paramètresstd::string
différemment. - Assurez-vous que toute chaîne passée en paramètre ait
"Specialized: "
ajouté au début de la valeur retournée.
Solution
solution
Merci pour vos commentaires !
Comment Utiliser la Spécialisation de Template
Syntaxe de la spécialisation de modèle
Pour comprendre comment fonctionne la spécialisation de modèle, nous devons d'abord saisir ce qui se passe en coulisses lorsqu'un modèle est appelé avec un type de données spécifique.
Lorsque vous appelez une fonction modèle avec un type particulier, le compilateur génère une instance concrète du modèle pour ce type. Ce processus est appelé instanciation de modèle. Essentiellement, le compilateur substitue le paramètre du modèle par le type fourni et crée une version spécialisée de la fonction.
main
header
#include <iostream> template<typename T> T TemplateFunction(T value) { return value; } int main() { // When the compiler encounters this line // It generates a function for the specified type // VVV TemplateFunction<int>(5); }
Mais d'abord, il vérifie si une substitution pour cette fonction existe déjà. Il n'y a aucun intérêt à générer plusieurs instances de cette fonction si elle est appelée avec le même type à plusieurs reprises. Avec cette connaissance, nous pouvons l'utiliser à nos fins.
Swipe to start coding
Créez une spécialisation de modèle pour le TemplateFunction
qui gère les types de données std::string
.
- Implémentez une spécialisation pour
TemplateFunction
afin de traiter les paramètresstd::string
différemment. - Assurez-vous que toute chaîne passée en paramètre ait
"Specialized: "
ajouté au début de la valeur retournée.
Solution
solution
Merci pour vos commentaires !