Because my system can't install Chinese IME, so... In fact, everyone read this article should know my english is very pool.
// This template class is used to add "ref count" feature for any class template <class T> class CRefObject : public T { public: DWORD AddRef(void) { return ::InterlockedIncrement((LPLONG)&m_dwRef); } DWORD Release(void) { if (0 == m_dwRef || 0 == ::InterlockedDecrement((LPLONG)&m_dwRef)) { delete this; return 0; } return m_dwRef; } // Create an instance buf ref == 0 static CRefObject<T> * CreateInstance(void) { CRefObject<T> * p = NULL; p = new CRefObject<T>(); return p; } protected: // Note: All T MUST have a default constructor CRefObject(void) : m_dwRef(0) { } // I think it is unnecessary to define a "virtual" distrcutor ~CRefObject() {}; DWORD m_dwRef; };

|