(5)-类成员函数的thiscall约定
最后更新于:2022-04-01 16:11:03
**代码:**
****
~~~
#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*](http://blog.csdn.net/zhanxinhang)) to have a communication =======