Is Checking for "this" Nullity Ever Justified?
オブジェクト指向プログラミングの領域における "this" の概念多くの場合、現在のオブジェクトの概念と同義であり、重要な役割を果たします。ただし、このコンテキストで生じる疑問は、「this」が null かどうかを確認することに意味があるのかどうかということです。
元の質問:
メンバーを持つクラス内
「内部に条件 "this == nullptr" を持つメソッドがあり、その結果が true の場合、エラー コードを返すように指示されます。
」 "this" は確かに null で、オブジェクトが削除されたことを示していますが、メソッドは引き続き出力を生成できますか?
標準 C パースペクティブ:標準 C では、答えは断然ノーです。 NULL ポインターに対する呼び出しは、定義上、未定義の動作です。 "this" == null のチェックに依存するコードはすべて非標準です。これは非仮想関数にも適用されることに注意することが重要です。
特定の実装の例外:一部の C 実装では、「this == 0,」が許可されています。標準の動作に対する警告を作成します。このような実装用に特別に設計されたライブラリは、VC と MFC の組み合わせで例示されるように、この条件をハックとして利用する可能性があります。
その他の考慮事項:厳密な実装ルールを超えて、他の要因が "this" == null チェックの存在に寄与する可能性があります。一部のインスタンスはデバッグ支援として機能し、呼び出し側のコーディング エラーが原因で以前にその条件が発生したときにエラーを捕捉します。一般に、この目的にはアサートが推奨され、そのような状況を検出するためのより適切なメカニズムが提供されます。
結論:標準 C のコンテキストでは、「this」をチェックします。 == null は両端揃えではありません。 null ポインターでのメソッド呼び出しは本質的に未定義の動作であるため、そのようなチェックへの依存は信頼できなくなります。コードレビュー中にこれらのチェックが発生した場合は、これらのチェックを精査し、より適切なエラー処理メカニズムに置き換える必要があります。以上が「この」NULL のチェックは C で正当化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。