困扰C++程序员的一个很严重问题是内存泄露。即某些动态分配的内存在使用完后并没有被释放。这里介绍了一种智能指针的实现方式。当一个动态分配的内存没有被使用的时候,将会被自动释放,从而解决内存泄露的问题。 template<class _T> class SmartPtr { private: _T *key; size_t *counter; void decrease() { if (--*counter == 0) delete key; } public: SmartPtr (_T *t = NULL) : key(t), counter(new size_t(1)) { } SmartPtr(const SmartPtr & sp) { key = sp.key; counter = sp.counter; (*counter)++; } SmartPtr & operator = (const SmartPtr & sp) { decrease(); key = sp.key; counter = sp.counter; (*counter)++; } virtual ~SmartPtr() { decrease(); } };