智能指针1---AutoPtr

来源:互联网 发布:二战日本的海军数据 编辑:程序博客网 时间:2024/06/12 20:44

AutoPtr: 其主要思路是管理权的转移,当有新对象指向这块空间时,将原指针置空,实现管理权的转移。


#pragma once template<class T>class AutoPtr{public:AutoPtr():_ptr(NULL){}AutoPtr(T* ptr):_ptr(ptr){}//拷贝构造AutoPtr(const AutoPtr<T>& ap):_ptr(ap._ptr){ap._ptr = NULL;}//赋值运算符重载AutoPtr& operator=(AutoPtr<T>& ap){if (this != &ap){delete this->_ptr;this->_ptr = ap._ptr;ap._ptr = NULL;}return *this;}//析构函数~AutoPtr(){if (this->_ptr != NULL){delete _ptr;_ptr = NULL;}}//重载operator->T& operator->(){return  _ptr;}//重载operator*T* operator*(){return *_ptr;}protected:T* _ptr;};void TestAutoPtr(){AutoPtr<int> ap1(new int(1));AutoPtr<int> ap2;//ap2 = ap1;}


1 0
原创粉丝点击