您的位置:首页 > 其它

空类指针调用成员函数 类内的this指针

2012-12-27 16:48 190 查看
运行下面中的代码,得到的结果是什么?

class A

{

private:

int m_value;

public:

A(int value)

{

m_value = value;

}

void Print1()

{

printf("hello world");

}

void Print2()

{

printf("%d", m_value);

}

};

int _tmain(int argc, _TCHAR* argv[])

{

A* pA = NULL;

pA->Print1();

pA->Print2();

return 0;

}

分析:

答案是Print1调用正常,打印出hello world,但运行至Print2时,程序崩溃。



调用Print1时,并不需要pA的地址,因为Print1的函数地址是固定的。编译器会给Print1传入一个this指针,该指针为NULL,但在Print1中该this指针并没有用到。只要程序运行时没有访问不该访问的内存就不会出错,因此运行正常。



在运行print2时,需要this指针才能得到m_value的值。由于此时this指针为NULL,因此程序崩溃了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐