Contenu du cours
Modèles C++
Modèles C++
Syntaxe de Base des Modèles en C++
Créer un modèle est en fait assez simple, et c'est l'une des parties les plus faciles de leur utilisation. Pour commencer, vous devrez créer soit une fonction, soit une classe. Nous commencerons par la fonction.
main
void MyFirstTemplate() { } int main() { MyFirstTemplate(); }
Comme vous pouvez le voir, il y a une fonction très simple qui ne fait rien pour l'instant. Nous pouvons facilement l'appeler à l'intérieur de la fonction main
. Votre tâche maintenant est de la transformer en modèle.
template
// To create a template, you need to add code above the function or class // Start with the keyword `template` to indicate you're defining a template // template // Add angle brackets `<>`, this is list of the parameters for template // template < > // Inside of it has to be keyword `typename` and the name of it // template <typename Name> template <typename Name> void MyFirstTemplate() { }
Maintenant, faisons-le faire quelque chose, comme imprimer un message. Allez-y et appelez-le à l'intérieur de la fonction principale pour le voir en action.
main
#include <iostream> template<typename Name> void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { MyFirstTemplate(); }
Comme vous pouvez le voir, une erreur survient lorsque nous essayons de l'appeler comme s'il s'agissait d'une simple fonction. C'est parce que ce n'est plus simplement une fonction. C'est là que le paramètre de modèle, spécifié à l'intérieur des crochets après le mot-clé template
, entre en jeu.
main
#include <iostream> // This essentioally creates an alias for a type we will use template<typename Name> // In our case the name of the type is Name void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { // In order to call the template function properly // We need to specify any type inside the brackets MyFirstTemplate<void>(); // This tells the template to use void as the type for Name }
Remarque
Peu importe le type que vous spécifiez pour cet exemple, vous pouvez donc changer
void
pour n'importe quel type que vous souhaitez. Cependant, spécifier le type est obligatoire.
Pour le modèle de fonction MyFirstTemplate
, il n'est pas nécessaire de spécifier un nom pour le paramètre de type. Vous pouvez supprimer Name
, et tout fonctionnera toujours car le paramètre de type n'est pas utilisé à l'intérieur de la fonction.
Merci pour vos commentaires !