天天看點

smart_pointer example

#pragma once

template<typename T>

class smart_pointer

{

private:

  T* m_pRawPointer;

public:

  smart_pointer(T* pData) :m_pRawPointer(pData) {}

  //複制構造函數

  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;

};