Maison >développement back-end >C++ >Quand devriez-vous utiliser `nullptr` en C ?

Quand devriez-vous utiliser `nullptr` en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-09 09:38:02250parcourir

When Should You Use `nullptr` in C  ?

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!

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