====== C - C++ Templates - Template Counter ====== #include #include template class ObjectCounter { private: static size_t count; // number of existing objects protected: // default constructor ObjectCounter() { ++count; } // copy constructor ObjectCounter (ObjectCounter const&) { ++count; } // destructor ~ObjectCounter() { --count; } public: // return number of existing objects: static size_t live() { return count; } }; // initialize counter with zero template size_t ObjectCounter::count = 0; template class MyString : public ObjectCounter > { //... }; int main() { MyString s1, s2; MyString ws; std::cout << "number of MyString: " << MyString::live() << std::endl; std::cout << "number of MyString: " << ws.live() << std::endl; }