在上一篇博客中提到了Auto_ptr(C++智能指针(一)),下面进行模拟实现Auto_ptr
采用类模板实现
#include<iostream>
using namespace std;
template<class T>
class Autoptr
{
public:
Autoptr(T* ptr = NULL)
:_ptr(ptr)
{}
//Autoptr()
:_ptr(NULL)
//{}
Autoptr(Autoptr<T>& ap)
{
this->_ptr = ap._ptr;
ap._ptr = NULL;
}
Autoptr<T>& operator=(Autoptr<T>& sp)
{
if (this != &sp)
{
delete this->_ptr;
_ptr = sp._ptr;
sp._ptr = NULL;
}
return *this;
}
T* operator->()
{
return _ptr;
}
T operator*()
{
return *_ptr;
}
~Autoptr()
{
delete _ptr;
_ptr = NULL;
}
void Reset(T* ptr = 0)
{
if (_ptr != ptr)
{
delete _ptr;
}
_ptr = ptr;
}
protected:
T* _ptr;
};
void test()
{
//int *p1 = new int(10);
//Autoptr&l