???????????????????
????RAII(Resource Acquisition Is Initialization)
??????????伴?????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????й????????????????????????????????????????????????????????????????
???????????????????????????????????????????????Щ????£?????????????????治??????????????????й??????????????????????????

?????????????????????????????????????????????
????C++11???????????????????
????auto_ptr:??C++??????????????????????????????????????????????????????????
?????????????????????????????????????????????????
template<class T>
class Auto_ptr
{
public:
Auto_ptr(T& ptr)
:_ptr(ptr)
{}
~Auto_ptr()
{
delete _ptr;
}
Auto_ptr(Auto_ptr<T>& ap)
:_ptr(ap._ptr)
{
ap._ptr = NULL;
}
Auto_ptr& operator=(Auto_ptr<T>& ap)
{
if (this != &ap)
{
delete _ptr;
_ptr = ap._ptr;
ap._ptr = NULL;
}
}
private:
T* _ptr;
};
????unique_ptr:????????????????????????????????????????????????????????????????к????????????????????壬?????????????????????????????
??????????????????????????
template<class T>
class Unique_ptr
{
public:
Unique_ptr(T& ptr)
:_ptr(ptr)
{}
~Unique_ptr()
{
delete _ptr;
}
private:
T* _ptr;
Unique_ptr(Unique_ptr<T>& ap);
Unique_ptr& operator=(Unique_ptr<T>& ap);
};
????shared_ptr:??????ü??????????????????????????????ó?????????????????????????????????????????????????????????
????weakd_ptr:?????shared_ptr??????????????
????????shared_ptr?????weakd_ptr:???????????????????