Null オブジェクト ポインターでメンバー関数を呼び出すと未定義の動作が発生する
よくあるインタビューの質問では、メンバー関数を呼び出した場合の潜在的な結果が詳しく調査されていますnull オブジェクト ポインターの場合。このシナリオでは、未定義の動作が発生し、プログラムが予測不可能な結果にさらされる可能性があります。
次のコードを調べてみましょう:
class A { public: void fun() { std::cout << "fun" << std::endl; } }; A* a = NULL; a->fun();
null ポインターで fun() メソッドを呼び出すと、未定義のトリガーが発生します。行動。その理由は次のとおりです。
a のようなポインタを作成する場合、それは基本的にメモリ アドレスになります。これを NULL に設定すると、このポインターが有効なオブジェクトを指していないことを示します。 a->fun() にアクセスすることにより、プログラムは NULL ポインターの逆参照を試みますが、これは禁止されています。
a が指すオブジェクトが存在しないため、プログラムは次のような予期しない動作を示す可能性があります。 :
このような未定義の動作を防ぐには、逆参照する前にオブジェクト ポインターが有効であることを確認することが重要です。
以上がNull オブジェクト ポインターでメンバー関数を呼び出すとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。