首頁 > 後端開發 > C++ > 主體

為什麼在 C 中呼叫空指標方法有時會起作用?

Susan Sarandon
發布: 2024-10-28 08:40:30
原創
534 人瀏覽過

 Why Does Invoking a Method on a Null Pointer in C   Sometimes Work?

理解未定義的行為:C 中的空指標方法呼叫

在C 中,處理空指標時程式執行可能會發生意外的轉變。這在透過空指標呼叫方法的情況下很明顯,如以下程式碼片段所示:

<code class="cpp">#include <iostream>

using namespace std;

class Test {
    int i;
public:
    Test() : i(0) { cout << "ctor called" << endl; }
    void show() { cout << "show fun called" << endl; }
};

int main(int argc, char *argv[]) {
    Test *ptr = NULL;
    ptr->show();
    return 0;
}</code>
登入後複製

意外的是,儘管嘗試存取show() 方法,但構造函數並未被呼叫通過空指針ptr。此行為源自於這樣一個事實:編譯器可以確定空指標的類型,從而允許它識別 show() 方法。由於該方法不使用 this 指針,因此程式碼執行順利。

雖然方便,但 C 標準認為此行為未定義。編譯器可以自由地產生行為不同或使程式崩潰的程式碼。因此,依賴這種行為是不明智的,並且可能會導致不可預測的結果。

因此,避免在 C 中透過空指標呼叫方法至關重要。始終確保指標的正確初始化,以避免未定義的行為並保持程式完整性。

以上是為什麼在 C 中呼叫空指標方法有時會起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!