Contenu du cours
Modèles C++
Modèles C++
Modèles Avec Paramètres de Type Par Défaut
Il est possible de spécifier un type de paramètre par défaut pour un modèle de classe et à partir de C++11, les arguments de modèle par défaut peuvent également être utilisés dans les modèles de fonction. Pour définir un type par défaut, écrivez simplement le type souhaité après le signe égal pour le paramètre de modèle.
main
#include <iostream> template <typename T = int> // `int` will be used as a default type class Box { T value; // Stores the value of type `T` public: Box(T value) : value(value) { std::cout << this->value; } }; int main() { // Type not specified // VV Box<> intBox(25.5); }
Lorsque vous exécutez le code ci-dessus, le résultat sera 25
au lieu de 25.5
. Cela se produit parce que le type par défaut pour la classe Box
est défini sur int
, ce qui tronque la partie décimale de la valeur.
Remarque
Similaire aux arguments de fonction par défaut, si un paramètre de modèle a un argument par défaut, alors tous les paramètres de modèle qui le suivent doivent également avoir des arguments par défaut.
En plus des paramètres de type par défaut, C++ permet des paramètres de modèle non typés avec des valeurs par défaut. Les paramètres non typés peuvent être des types entiers, des pointeurs ou des références. Pour spécifier un paramètre par défaut non typé, il suffit d'assigner une valeur par défaut après le paramètre.
array
// `int` and `10` are default parameters template <typename T = int, size_t Size = 10> struct Array { T arr[Size]; // Array with a fixed size of `Size` }
Les paramètres de modèle par défaut simplifient le code, réduisent la redondance et permettent aux modèles de gérer les cas d'utilisation typiques avec un minimum d'effort tout en permettant la personnalisation si nécessaire.
Merci pour vos commentaires !