用static实现类的多个实例共享一个变量
首先请看《C++ primer》12.6节,内容不多,15分钟可以看完。
总结一下需要做的几件事:
1、在.h文件中定义static成员,如:static int test_num;
2、在.cpp文件中初始化这个成员,如: int class_name::test_num = 0;
这样你就可以在类中像使用普通成员一样使用static成员了。
====================我是华丽丽的分割线===================
对于在初始化时需要做处理的static成员(如需要向hashmap的成员填入数据),一种可选的办法是在类的构造和析构函数中做初始化和销毁的工作。
维护一个static变量用于记录当前类的实例对象个数。注意:如果实现了类的copy和operater=,记得在这两个地方将计数器加1
在构造函数中检查成员是否已经完成初始化以及相关操作,若没有则进行初始化和相关操作。同时将计数器加1.
在析构函数中检查计数器是否等于0,若等于,则销毁对应的static成员。