• 静态成员 安静点


    静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

    静态成员分为:

    • 静态成员变量
      • 所有对象共享同一份数据
      • 在编译阶段分配内存
      • 类内声明,类外初始化
    • 静态成员函数
      • 所有对象共享同一个函数
      • 静态成员函数只能访问静态成员变量

    **示例1 :**静态成员变量

    class Person
    {
        
    public:
    
        static int m_A; //静态成员变量
    
        //静态成员变量特点:
        //1 在编译阶段分配内存
        //2 类内声明,类外初始化
        //3 所有对象共享同一份数据
    
    private:
        static int m_B; //静态成员变量也是有访问权限的
    };
    int Person::m_A = 10;
    int Person::m_B = 10;
    
    void test01()
    {
        //静态成员变量两种访问方式
    
        //1、通过对象
        Person p1;
        p1.m_A = 100;
        cout << "p1.m_A = " << p1.m_A << endl;
    
        Person p2;
        p2.m_A = 200;
        cout << "p1.m_A = " << p1.m_A << endl; //共享同一份数据
        cout << "p2.m_A = " << p2.m_A << endl;
    
        //2、通过类名
        cout << "m_A = " << Person::m_A << endl;
    
    
        //cout << "m_B = " << Person::m_B << endl; //私有权限访问不到
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }

    **示例2:**静态成员函数

    class Person
    {
    
    public:
    
        //静态成员函数特点:
        //1 程序共享一个函数
        //2 静态成员函数只能访问静态成员变量
        
        static void func()
        {
            cout << "func调用" << endl;
            m_A = 100;
            //m_B = 100; //错误,不可以访问非静态成员变量
        }
    
        static int m_A; //静态成员变量
        int m_B; // 
    private:
    
        //静态成员函数也是有访问权限的
        static void func2()
        {
            cout << "func2调用" << endl;
        }
    };
    int Person::m_A = 10;
    
    
    void test01()
    {
        //静态成员变量两种访问方式
    
        //1、通过对象
        Person p1;
        p1.func();
    
        //2、通过类名
        Person::func();
    
    
        //Person::func2(); //私有权限访问不到
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }

    静态成员函数不可以访问非静态成员变量,因为静态函数是共享的,是不知道方法里面一个非静态对象到底是谁的,所以不可以访问非静态成员变量

     

     

     

     

     

  • 相关阅读:
    【bzoj1174】[Balkan2007]Toponyms Trie树
    【bzoj1786】[Ahoi2008]Pair 配对 dp
    【bzoj3956】Count 单调栈+可持久化线段树
    【bzoj4605】崂山白花蛇草水 权值线段树套KD-tree
    【bzoj3696】化合物 树形dp
    【bzoj1150】[CTSC2007]数据备份Backup 模拟费用流+链表+堆
    【bzoj3671】[Noi2014]随机数生成器 贪心
    【bzoj4653】[Noi2016]区间 双指针法+线段树
    【bzoj4197】[Noi2015]寿司晚宴 分解质因数+状态压缩dp
    用Python操作Named pipe命名管道,实用做法——os.read 或 os.write
  • 原文地址:https://www.cnblogs.com/anjingdian/p/16099590.html
Copyright © 2020-2023  润新知