智能指针(简单版)

template<typename T>
class auto_ptr 
{
public:
explicit autp_ptr(T *p = 0) : 
m_ptr(p){}
auto_ptr(const auto_ptr<T>& copy) : m_ptr(copy.release()){}
auto_ptr<T>& operator=(const auto_ptr<T>& assign) 
{
   if (this != &assign)
   {
       delete m_ptr;
       m_ptr=assign.release();    
       // 释放并移交拥有权
   }
   return *this;
};auto_ptr(){delete m_ptr;}        // 负责释放存储
   T&operator*(){return*m_p;}         // 重载“*”
   T*operator->(){return m_p;}        // 重载“->”
   T* release() const 
   {
       T *temp = m_ptr;
      (const_cast<auto_ptr<T> *(this))->m_ptr = 0;
       return temp;
   }
private:
      T * m_ptr;
};

注意:此智能指针不可以做为STL容器的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值