C++使用类静态成员跟踪对象的个数

在C++中类的静态成员用static定义,而且可以是public或private的,很关键的一点是static成员是放在.data段(PE文件结构)的,所以这也是在对象的成员函数和静态函数能访问到静态成员的原因。
简单的说,静态成员是和类相关联的,普通的成员是和对象关联的。
很重要的一点是,静态成员必须要初始化,而且不能在类的进行,不然编译报错.

#include <iostream>
using namespace std;


class   Cat
{
    private:
        static  int num;//定义一个静态成员
    public:
        Cat()
        {
            num++;
        }//构造函数num加1,表示多了一个cat对象
        static int getNumOfCats()
        {
            return num;
        }
        ~Cat()
        {
            num--;
        }//析构函数,cat对象减一
};
int Cat::num = 0;
int main()
{
    Cat c;
    cout<<"Num:"<<Cat::getNumOfCats()<<endl;
    Cat carr[4];
    cout<<"Num:"<<Cat::getNumOfCats()<<endl;

    return 0;
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/cosmopolitanme/article/details/79849622