Vérifier si c'est null

T-il jamais de sens de vérifier si ce est null?

Dire que j'ai une classe avec une méthode; à l'intérieur de cette méthode, je vérifie this == NULL, et si elle l'est, retourner un code d'erreur.

Si ce est nulle, alors cela signifie que l'objet est supprimé. La méthode est même en mesure de retourner quoi que ce soit?

Mise à jour: j'ai oublié de mentionner que la méthode peut être appelée à partir de plusieurs threads, et il peut causer la suppression de l'objet, tandis qu'un autre thread est à l'intérieur de la méthode.

  • Cela ne signifie pas que l'objet a été supprimé. La suppression d'un pointeur n'est pas automatiquement à zéro, et ((Foo*)0)->foo() est parfaitement valide la syntaxe. Aussi longtemps que foo() n'est pas une fonction virtuelle, ce sera même travail sur la plupart des compilateurs, mais c'est juste dégueulasse.
  • "peut entraîner la suppression de l'objet, tandis qu'un autre thread est à l'intérieur de la méthode". Ce n'est pas acceptable, vous ne devez pas supprimer un objet tout autre code (dans le même thread ou un autre) conserve une référence qu'il utilisera. Il ne sera pas causer des this pour devenir nulle dans l'autre thread.
  • Je suis à la recherche à une situation où ce n'est certainement NULLE. Dieu seul sait pourquoi.
  • "cette" semble être null chaque fois que le parent de la classe est abstraite.
  • De GCC 6.2 notes de publication: Valeur de la distance de propagation maintenant suppose que le pointeur this de C++ fonctions de membre est non-nulle.
InformationsquelleAutor user156144 | 2009-12-04