#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实例,那仅仅只需要继承就可以了。