#ifndef MEYERSCOUNTING_H_
#define MEYERSCOUNTING_H_
template<typename CountedType>
class ObjectCounter {
private:
static size_t count;
protected:
ObjectCounter() {
++ObjectCounter<CountedType>::count;
}
ObjectCounter( const ObjectCounter<CountedType> &) {
++ObjectCounter<CountedType>::count;
}
~ObjectCounter() {
--ObjectCounter<CountedType>::count;
}
public:
static size_t liveCount() {
return ObjectCounter<CountedType>::count;
}
};
template<typename CountedType>
size_t ObjectCounter<CountedType>::count = 0;
class MyClass : public ObjectCounter<MyClass> {};
#endif
如果你想给自己的MyClass类计数,记录创建了多少个MyClass实例,那仅仅只需要继承就可以了。
本文介绍了一种利用模板元编程实现的通用对象计数器技术。通过继承`ObjectCounter`类并特化模板参数,可以自动记录指定类型对象的创建和销毁数量,无需额外维护计数逻辑。
6580

被折叠的 条评论
为什么被折叠?



