1. 程式人生 > >C++中空指標訪問類方法

C++中空指標訪問類方法

先看一段程式碼:

#include<iostream>

using namespace std;

class A
{
public:
    void func(){
        cout << "hello" << endl;
    }
};
int main(){
    A *p = nullptr;
    p->func();
    return 0;
}

一開始看到這個程式碼,感覺p指向的是nullptr,所以p->func()肯定是要報錯了啊。但是實際執行是沒有問題的,可以輸出hello.

原因就是因為函式是屬於類的,在編譯的時候就確定了,就算是空指標也可以正常訪問該方法。

如果將上面的函式func改為虛擬函式,則會報錯。因為虛擬函式是在執行時決定呼叫哪個函式的,不會在靜態編譯期間確定,是遲繫結的,所以空指標訪問時會出錯。