2011-07-09 36 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指出的那样,未定义的行为。你不应该这样做。