1. #include<iostream>
2. using namespace std;
3.
4. class A
5. {
6. private:
7. int value;
8. public:
9. A()
10. {
11. value=0;
12. }
13. void coutHello()
14. {
15. cout<<"hello"<<endl;
16. }
17. void coutValue()
18. {
19. cout<<value<<endl;
20. }
21. };
22. int main()
23. {
24. A *pA=NULL; //空指针,所指向的内容不可访问存取
25.
26. pA->coutHello();
27. pA->coutValue();
28.
29. return 0;
30. }
疑:调用coutHello和coutValue方法有什么问题?
解答:成员函数的地址在编译器编译时给出的,所以是已知的,根据thiscall约定,类的成员函数在编译时编译器会传入一个this指针,通过this指针指向成员变量,在调用couthello时并未用到this指针所以调用正常,而调用coutvalue时,value需要用到this指针,因为此时this是NULL指针,所以会发生内存报错