(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 =======
';