auto_ptr实现原型

namespace std{
template<class Y>
struct auto_ptr_ref
{
Y* yp;
auto_ptr_ref(Y* rhs) :yp(rhs){


}
};


template<class T>
class auto_ptr{
private:
T* ap;
public:
typedef T element_type;
explicit auto_ptr(T* ptr = 0)throw() :ap(ptr){


}


auto_ptr(auto_ptr& rhs)throw():ap(rhs.release()){}
template<class Y>
auto_ptr(auto_ptr<Y>& rhs)throw():ap(rhs.rekease()){


}



auto_ptr& operator=(auto_ptr& rhs)throw(){
reset(rhs.release());
return *this; 
}


template<class Y>
auto_ptr& operator=(auto_ptr<Y>& rhs)throw(){
reset(rhs.release());
return *this;
}


~auto_ptr()throw(){
delete ap;
}


T* Get() const throw(){
return ap;


}


T& operator*()const throw(){
return *ap;
}


T* operator->()const throw(){
return ap;
}
\


T* release()throw(){
T* tmp(ap);
ap = 0;
return tmp;
}


};
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值