Maison >développement back-end >C++ >NULL vs nullptr : pourquoi la représentation du pointeur nul de C a-t-elle été modifiée ?
NULL vs nullptr : l'évolution de la représentation du pointeur nul
En C 0x, la macro NULL traditionnelle a été remplacée par nullptr. Ce changement n’était pas simplement cosmétique ; il a introduit des améliorations significatives dans la gestion des pointeurs nuls par le langage.
Pourquoi le remplacement ?
NULL, défini comme 0, a créé une ambiguïté potentielle dans la résolution de fonctions surchargées. Considérez le code suivant :
void f(int); void f(foo *);
Si un appel à f(NULL) est effectué, le compilateur ne sait pas s'il doit invoquer f(int) ou f(void *). Cette ambiguïté est résolue en utilisant nullptr, qui a le type std::nullptr_t et est implicitement convertible en n'importe quel type de pointeur.
Avantages de nullptr
Par rapport à NULL, nullptr offre plusieurs avantages lorsque vous travaillez avec pointeurs :
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!