smart_pointer example

#pragma once
template<typename T>
class smart_pointer
{
private:
  T* m_pRawPointer;
public:
  smart_pointer(T* pData) :m_pRawPointer(pData) {}

  // copy constructor
  smart_pointer (const smart_pointer & anotherSP);

  //赋值
  smart_pointer& operator=(const smart_pointer& anotherSP);

  //
  T& operator* () const
  {
    return *(m_pRawPointer);
  }

  T* operator-> () const
  {
    return m_pRawPointer;
  }

};

 

Guess you like

Origin www.cnblogs.com/herd/p/10991563.html