zoukankan      html  css  js  c++  java
  • 转载:什么时候可以不用实例化对象就可以调用类中成员函数

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

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

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

    [cpp] view plain copy
     
     print?
    1. #include <iostream>  
    2.   
    3. using namespace std;  
    4.   
    5. class A  
    6. {  
    7. public:  
    8.     void fun1()  
    9.     {  
    10.         cout<<"fun1"<<endl;  
    11.   
    12.         fun2();  //如果fun2函数内部调用了数据成员a,则会调用失败  
    13.     }  
    14.   
    15.     void fun2()  
    16.     {  
    17.         cout<<"fun2"<<endl;  
    18.         //a = 1;  
    19.     }  
    20.   
    21. private:  
    22.     int a;  
    23.     int b;  
    24. };  
    25.   
    26.   
    27. int main()  
    28. {  
    29.     A *p = NULL;  
    30.     p->fun1();  
    31. }  

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

    [cpp] view plain copy
     
     print?
    1. #include <iostream>  
    2.   
    3. using namespace std;  
    4.   
    5. class A  
    6. {  
    7. public:  
    8.     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. }  


     

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

    [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. }  
  • 相关阅读:
    小进步一点
    首个vue.js项目收尾中……
    elememtui(有关权限的那些事)
    vue.js2.0+elementui ——> 后台管理系统
    console.log篇
    select下拉框不能赋值
    vue中的小踩坑(01)
    vue2.0+element-ui(01简单点的单页面)
    lodash(二)对象+循环遍历+排序
    lodash(一)数组
  • 原文地址:https://www.cnblogs.com/penghuster/p/7070586.html
Copyright © 2011-2022 走看看