空的类指针照样调用成员函数

来源:互联网 发布:windows 适合的Ps 编辑:程序博客网 时间:2024/06/04 18:23
#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)。但是你没有引用类里面的任何变量,所以程序运行通过。



0 0
原创粉丝点击