【C++】25 类的静态成员变量

成员变量的回顾

通过对象名能够访问public成员变量

每个对象的成员变量都是专属的

成员变量不能在对象之间共享

【C++】25 类的静态成员变量_第1张图片

#include 

class Test
{
    private: 
    int mCount;
    public:
    Test():mCount(0)
    {
        mCount ++;
    }
    ~Test()
    {
        --mCount;
    }
    int getCount()
    {
        return mCount;
    }
};
Test GTest;

int main()
{
    Test t1;
    Test t2;
    printf("count = %d\n",GTest.getCount());
    printf("count = %d\n",t1.getCount());
    printf("count = %d\n",t2.getCount());
    return 0;
}

输出:

count = 1
count = 1
count = 1

静态成员变量

在C++中可以定义静态成员变量

静态成员变量属于整个类所有

静态成员变量的生命期不依赖与任何对象

可以通过类名直接访问公有静态成员变量

所有对象共享类的静态成员变量

可以通过对象名访问公有静态成员变量

静态成员变量的特性

在定义时直接通过static关键字修饰
静态成员变量需要在类外单独分配空间
静态成员变量在程序内部位于全局数据区
例:

#include 

class Test
{
    private: 
     static int mCount;
    public:
    Test()
    {
        mCount ++;
    }
    ~Test()
    {
        --mCount;
    }
    int getCount()
    {
        return mCount;
    }
};
int Test::mCount = 00;
Test GTest;

int main()
{
    Test t1;
    Test t2;
    printf("count = %d\n",GTest.getCount());
    printf("count = %d\n",t1.getCount());
    printf("count = %d\n",t2.getCount());
    return 0;
}

输出结果:

count = 3
count = 3
count = 3

例:

#include 

class Test
{
    private: 
     static int mCount;
    public:
    Test()
    {
        mCount ++;
    }
    ~Test()
    {
       -- mCount;
       printf("runing\n");
    }
    int getCount()
    {
        return mCount;
    }
};
int Test::mCount = 00;
Test GTest;

int main()
{
    Test t1;
    Test t2;
    printf("count = %d\n",GTest.getCount());
    printf("count = %d\n",t1.getCount());
    printf("count = %d\n",t2.getCount());
    Test* pt = new Test(); 
    printf("count = %d\n",pt->getCount());
    delete pt;
     printf("count = %d\n",GTest.getCount());
    return 0;
}

输出:

count = 3
count = 3
count = 3
count = 4
runing
count = 3
runing
runing
runing

【C++】25 类的静态成员变量_第2张图片

你可能感兴趣的:(c++)