类的静态成员变量与静态成员函数


需求

统计在程序运行期间某个类的对象数目:

1 保证程序的安全性(不能使用全局变量)

2 随时可以获取当前对象的数目

1 类的静态成员变量

(1).c++中静态成员变量

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

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

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

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

e.可以通过对象名访问共有的静态成员变量

(2).静态成员变量的特性

a.在定义时直接通过static来修饰

b.静态成员变量需要在类外单独分配空间

c.静态成员变量在程序内部位于全局数据区

(3).小结

a.类中可以通过static定义静态成员变量

b.静态成员变量隶属于类所有

c.每一个对象都可以访问静态成员变量

d.静态成员变量在全局数据区分配空间

e.静态成员变量的生命期为程序运行期

(4).代码验证

#include <stdio.h>

class Test

{

private:

    static int cCount;

public:

    Test()

    {

        cCount++;

    }

    ~Test()

    {

        --cCount;

    }

    int getCount()

    {

        return cCount;

    }

};

int Test::cCount = 0;

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;

}//未能很好解决题目,不能满足第二条

(5).结果

2 类的静态成员函数

(1).c++中静态成员函数

a.静态成员函数是类中特殊的成员函数

b.静态成员函数属于整个类所有

c.可以通过类名直接访问共有静态成员函数

d.可以通过对象名访问公有静态成员函数


(2).小结


a.静态成员函数是类中特殊的成员函数

b.静态成员函数没有隐藏的this参数

c.静态成员函数可以通过类名直接访问

d.静态成员函数只能直接访问静态成员变量(函数)

(3)代码实现

#include <stdio.h>

class Test

{

private:

    static int cCount;

public:

    Test()

    {

        cCount++;

    }

    ~Test()

    {

        --cCount;

    }

    static int GetCount()//静态成员函数

    {

        return cCount;

    }

};

int Test::cCount = 0;

int main()

{

    printf("count = %d\n", Test::GetCount());

    Test t1;

    Test t2;

    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", Test::GetCount());

    return 0;

}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容