0


转载:什么时候可以不用实例化对象就可以调用类中成员函数

http://blog.csdn.net/dwb1015/article/details/32933349

对于一个类A,对于这个定义((A*)0)或者 A *p = NULL 都可以调用类中的那些成员函数。

    第一种情况:非静态成员函数没有使用类的非静态数据成员,调用的其他非静态成员函数也不能使用类的非静态数据成员

[cpp]
view plain
copy
print?

  1. #include <iostream>

  2. using namespace std;

  3. class A

  4. {

  5. public:

  6. void fun1()  
    
  7. {  
    
  8.     cout<<"fun1"<<endl;  
    
  9.     fun2();  //如果fun2函数内部调用了数据成员a,则会调用失败  
    
  10. }  
    
  11. void fun2()  
    
  12. {  
    
  13.     cout<<"fun2"<<endl;  
    
  14.     //a = 1;  
    
  15. }  
    
  16. private:

  17. int a;  
    
  18. int b;  
    
  19. };

  20. int main()

  21. {

  22. A *p = NULL;  
    
  23. p->fun1();  
    
  24. }

    第二种情况:非静态成员调用类的静态数据成员。

[cpp]
view plain
copy
print?

  1. #include <iostream>

  2. using namespace std;

  3. class A

  4. {

  5. public:

  6. void fun1()  
    
  7. {  
    
  8.     cout<<"fun1"<<endl;  
    
  9.     a = 3;  
    
  10.     cout<<"a = "<<a<<endl;  
    
  11. }  
    
  12. private:

  13. static int a;  
    
  14. int b;  
    
  15. };

  16. int A::a = 0;

  17. int main()

  18. {

  19. A *p = NULL;  
    
  20. p->fun1();  
    
  21. }

    第三种情况:类的静态成员函数
    

[cpp]
view plain
copy
print?

    1. #include <iostream> 2. 3. using namespace std; 4. 5. class A 6. { 7. public: 8. static void fun1() 9. { 10. cout<<"fun1"<<endl; 11. a = 3; 12. cout<<"a = "<<a<<endl; 13. } 14. 15. private: 16. static int a; 17. int b; 18. }; 19. 20. int A::a = 0; 21. 22. 23. int main() 24. { 25. A *p = NULL; 26. p->fun1(); 27. }
标签: c++ java android

本文转载自: https://blog.csdn.net/u010217394/article/details/121710560
版权归原作者 penghuster 所有, 如有侵权,请联系我们删除。

“转载:什么时候可以不用实例化对象就可以调用类中成员函数”的评论:

还没有评论