Quand utiliser nullptr
Dans le code C, les pointeurs peuvent être initialisés à des valeurs conceptuellement équivalentes : nullptr, NULL ou 0. Bien que ces les valeurs indiquent toutes un pointeur nul, nullptr offre plusieurs avantages.
Invocation de fonction surchargée
Considérez les fonctions surchargées suivantes :
void f(char const *ptr); void f(int v);
Dans le En l'absence de nullptr, l'appel suivant entraînerait une ambiguïté :
f(NULL); //which function will be called?
Cependant, l'utilisation de nullptr clarifie l'invocation de fonction prévue :
f(nullptr); //first function is called
Spécialisation de modèle pour nullptr
De plus, nullptr permet une spécialisation de modèle spécifiquement pour les pointeurs nuls. Considérez le modèle suivant :
template<typename T, T *ptr> struct something{}; //primary template
La spécialisation partielle suivante peut être définie pour nullptr :
template<> struct something<nullptr_t, nullptr>>{}; //partial specialization for nullptr
Cela permet de créer une surcharge dédiée pour gérer les arguments nullptr :
template<typename T> void f(T *ptr); //function to handle non-nullptr argument void f(nullptr_t); //an overload to handle nullptr argument!!!
Déduction de type pour nullptr
Dans les modèles, le type de nullptr est déduit comme nullptr_t. Cela simplifie le code, comme on le voit ci-dessous :
template<typename T> void f(T *ptr); //function to handle non-nullptr argument void f(nullptr_t); //an overload to handle nullptr argument!!!
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!