2011-07-09 47 views
0

可能重複:
Accessing class members on a NULL pointer空指針

#include<iostream.h> 
class X{ 
    private: 
     int x; 
    public: 
     X() {} 
     void func() { 
      cout<<"In func()"<<endl; 
     } 
}; 

int main(void) 
{ 
    X *x=NULL; 
    x->func(); 
    return 0; 
} 

我與O/P真的很驚訝,誰能請解釋我X如何訪問FUNC() 。

+6

這是未定義的行爲。沒有解釋 - 發生任何事情。 –

+2

@Bo - 好吧,*是*的解釋,而不是C++標準。有關C++如何編譯的更多信息。無論如何,無論如何評論+1,未定義的行爲。 – Steve314

回答

4

x->func()只是表示你打電話functhis指針是x。所以在這種情況下,它是NULL

func你沒有使用任何成員變量,所以你沒有使用this

無論如何,這是不好的,正如Bo Persson指出的那樣,未定義的行爲。你不應該這樣做。