智能指针类(ScopedPointer和SharedPointer)
当ScopedPoniter对象销毁时,会自动释放所指堆空间对象。
当SharedPointer对象销毁时,会自动将引用计数减1,只有当引用计数为0时才会释放堆空间对象。
- Pointer类 接口类
- ScopedPointer类 不可拷贝
- SharedPointer类 带引用计数
template <typename T>
class Pointer: public Object
{
protected:
T* m_pointer;
public:
Pointer(T* p = NULL) : m_pointer (p)
{ }
T* operator ->()
{ return m_pointer; }
T& operator * ()
{ return *m_pointer;}
bool isNull()
{ return (m_pointer == NULL); }
T* get() const
{ return m_pointer;}
virtual ~Pointer() = 0;
};
template <typename T>
Pointer<T>::~Pointer()
{ }
template<typename T>
class S