代码:
#include<iostream>
using namespace std;
class A
{
private:
int value;
public:
A()
{
value=0;
}
void coutHello()
{
cout<<"hello"<<endl;
}
void coutValue()
{
cout<<value<<endl;
}
};
int main()
{
A *pA=NULL; //空指针,所指向的内容不可访问存取
pA->coutHello();
pA->coutValue();
return 0;
}
(感谢网友提供的题目)
疑:调用coutHello和coutValue方法有什么问题?解答:成员函数的地址在编译器编译时给出的,所以是已知的,根据thiscall约定,类的成员函数在编译时编译器会传入一个this指针,通过this指针指向成员变量,在调用couthello时并未用到this指针所以调用正常,而调用coutvalue时,value需要用到this指针,因为此时this是NULL指针,所以会发生内存报错。
======= welcome to my HomePage(http://blog.csdn.net/zhanxinhang) to have a communication =======

本文详细解析了C++中类成员函数调用过程中可能出现的问题,特别是当使用空指针作为this指针时,如何导致内存访问错误。通过实例代码分析,解释了成员函数的地址编译时已知,但在调用时使用this指针时可能出现的异常情况,重点阐述了调用成员函数时this指针的作用和必要性。
1188

被折叠的 条评论
为什么被折叠?



