要看注释!!!
namespace juju
{
template<class T>
class auto_ptr
{
public:
auto_ptr(T* ptr)
:_ptr(ptr)
{}
~auto_ptr()
{
if (_ptr != nullptr)
{
std::cout << "delete:" << _ptr << std::endl;
delete _ptr;
}
}
T& operator*()
{
return *_ptr;
}
T* operator->()
{
return _ptr;
}
auto_ptr(auto_ptr<T>& ap)
:_ptr(ap._ptr)
{
ap._ptr = nullptr;
}
private:
T* _ptr;
};
}
void test_auto_ptr()
{
juju::auto_ptr<int> ap1(new int);
juju::auto_ptr<int> ap2(ap1);
*ap1 = 10;
*ap2 = 20;
}
int main()
{
test_auto_ptr();
system("pause");
return 0;
}