在空物件指標上呼叫成員函數時引發未定義的行為
一個常見的面試問題探討了呼叫成員函數的潛在後果在空物件指針上。這種情況可能會導致未定義的行為,使程式面臨不可預測的結果。
讓我們檢查以下程式碼:
class A { public: void fun() { std::cout << "fun" << std::endl; } }; A* a = NULL; a->fun();
在空指標 a 上調用 fun() 方法會觸發 undefined行為。原因如下:
建立像 a 這樣的指標時,它本質上就是一個記憶體位址。將其設為 NULL 表示該指標不指向任何有效物件。透過存取a->fun(),程式試圖解引用NULL指針,這是被禁止的。
由於a指向的物件不存在,程式可能會表現出不可預測的行為,例如:
為了防止此類未定義的行為,在取消引用物件指標之前確保物件指標有效至關重要。
以上是當您在空物件指標上呼叫成員函數時會發生什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!