<分区>
class Foo
{
public:
Foo(int i)
{
_i = i;
}
void p()
{
cout<<"printed"<<endl;
}
int _i;
};
int main()
{
Foo *p = 0;
cout <<p<<endl;
p->p();
return 0;
}
上面代码的实际输出是
0
printed
根据我的理解,它应该为访问 0x0 地址提供 SEG 错误。 因为*p地址是0x0。
为什么它有效?有人解释一下吗?