class_13:静态成员static关键字

发布时间:2024年01月20日

#include <iostream>

using namespace std;

class Myclass{
public:
    int datas;
    static int staticValue; //静态成员变量在类外进行初始化

    void printInfo(){
        cout<<datas<<endl;
    }

    static int getStaticDatas()//静态成员函数不能直接访问非静态变量和非静态函数,
    {                       //因为静态函数在编译阶段就已经存在,非静态函数和变量在运行阶段存在,先存在的不能访问后存在的
        return staticValue;
    }
};

class Test{
public:
    void printInfo();
};

void Test::printInfo()
{
     //静态变量也可以通过其他类进行访问,类似于全局
    Myclass::staticValue++;
    cout << Myclass::staticValue<< endl;
    //静态函数也可以通过其他类进行访问
    cout << Myclass::getStaticDatas()<< endl;

}

//静态成员变量在类外进行初始化
int Myclass::staticValue = 0;

int main()
{
    //静态变量可以不用通过对象进行访问,可以通过类名直接访问;
    cout << Myclass::staticValue<< endl;
    //静态函数可以不用通过对象进行访问,可以通过类名直接访问;
    cout << Myclass::getStaticDatas()<< endl;

    Test t1;
    t1.printInfo();


    return 0;
}

?

#include <iostream>

using namespace std;

class Myclass{
public:
    static int DuiXiangNum; //静态成员变量在类外进行初始化
    static int getDuiXiangNum()//静态成员函数不能直接访问非静态变量和非静态函数,
    {                       //因为静态函数在编译阶段就已经存在,非静态函数和变量在运行阶段存在,先存在的不能访问后存在的
        return DuiXiangNum;
    }

    Myclass(){
        DuiXiangNum++;
    }

    ~Myclass()
    {
       DuiXiangNum--;
    }
};



//静态成员变量在类外进行初始化
int Myclass::DuiXiangNum = 0;

int main()
{
    Myclass m1;
    cout << Myclass::getDuiXiangNum()<< endl;//1
    Myclass m2;
    cout << Myclass::getDuiXiangNum()<< endl;//2

    {
        Myclass m3;
        cout << Myclass::getDuiXiangNum()<< endl;//3
        Myclass m4;
        cout << Myclass::getDuiXiangNum()<< endl;//4
    }

    Myclass m5;
    cout << Myclass::getDuiXiangNum()<< endl;//3

    Myclass* m6 = new Myclass;
    cout << Myclass::getDuiXiangNum()<< endl;//4

    delete m6;
    cout << Myclass::getDuiXiangNum()<< endl;//3
    return 0;
}

?

?

文章来源:https://blog.csdn.net/qq_41962968/article/details/135721216
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。