#include <iostream>
using namespace std;
class A{
public:
void a(){
cout << "func_a" << endl;
}
};
int main(){
A * p = NULL;
p -> a();
return 0;
}
为什么输出func_a?
答案:
class Obj {
private:
int a;
public:
void func() { return a; }
};
p->func();
等价于:
void func(Obj *this) {
return this->a;
}
func(p);
现在你这个例子里面
p = NULL;
那么传递进去的this指针就是NULL,相当于func(NULL)。但是你没有引用类里面的任何变量,所以程序运行通过。