Est-il jamais utile de vérifier si this==null ? J'ai trouvé ceci en faisant une revue de code.
Dans le C++ standard, ce n'est pas le cas, car tout appel sur un pointeur nul est déjà un comportement non défini, donc tout code reposant sur de telles vérifications est non standard (il n'y a aucune garantie que la vérification sera même exécutée).
Notez que cela s'applique également aux fonctions non virtuelles.
Certaines implémentations permettent this==0
Cependant, et par conséquent, les bibliothèques écrites spécifiquement pour ces implémentations l'utiliseront parfois comme un hack. Un bon exemple d'une telle paire est VC++ et MFC - je ne me souviens pas du code exact, mais je me rappelle distinctement avoir vu if (this == NULL)
vérifie dans le code source de MFC quelque part.
Il peut également être là comme une aide au débogage, parce qu'à un moment donné dans le passé, ce code a été frappé avec this==0
à cause d'une erreur de l'appelant, donc une vérification a été insérée pour attraper les futurs cas de ce genre. Une assertion aurait plus de sens pour de telles choses, cependant.
Si this == null, cela signifie que l'objet est supprimé.
Non, ça ne veut pas dire ça. Cela signifie qu'une méthode a été appelée sur un pointeur nul, ou sur une référence obtenue à partir d'un pointeur nul (bien que l'obtention d'une telle référence soit déjà U.B.). Cela n'a rien à voir avec delete
et ne nécessite pas que des objets de ce type aient jamais existé.