使用智能指针(SmartPointer)替换单链表(LinkList)中的原生指针是否可行?
问题
-SmartPointer的设计方案
·指针声明周期结束时主动释放堆空间
·一片堆空间最多只能由一个指针标识
·杜绝指针运算和指针比较
新的设计方案
-Pointer是智能指针的抽象父类(模板)
·纯虚析构函数virtual ~Pointer() = 0;
·重载operator -> ()
·重载operator * ()
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()
{
return m_pointer;