Pointer.h

1 智能指针的设计方案

继承关系类图:
在这里插入图片描述

设计方案:

  • Pointer是智能指针的抽象父类(模板)。
  • 纯虚析构函数virtual ~Pointer() = 0;
  • 重载operator -> ();
  • 重载operator * ();

Pointer接口定义:
在这里插入图片描述


2 代码实现

#ifndef POINTER_H
#define POINTER_H

#include "Object.h"

namespace LemonLib {
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;
    }
};
}

#endif // POINTER_H

猜你喜欢

转载自blog.csdn.net/SlowIsFastLemon/article/details/85013904