STL之智能指针
来源:互联网 发布:nginx mysql 安装 编辑:程序博客网 时间:2024/05/21 06:55
#ifndef __MEMORY_H#define __MEMORY_H#include"Allocator.h"#include"construct.h"#include"uninitialized.h"template<class _Tp>class __auto_ptr{private:_Tp *_M_ptr;public:typedef _Tp element_type;explicit __auto_ptr(_Tp* __p = 0) :_M_ptr(__p){}__auto_ptr(__auto_ptr& __a) :_M_ptr(__a.release()){}template<class _Tp1>__auto_ptr(__auto_ptr<_Tp1>& __a) : _M_ptr(__a.release()){}__auto_ptr& operator=(__auto_ptr& __a){if (&__a != this){delete _M_ptr;_M_ptr = __a.release();}return *this;}template<class _Tp1>__auto_ptr& operator=(__auto_ptr<_Tp1>& __a){if (__a.get() != this.get()){delete _M_ptr;_M_ptr = __a.release();}return *this;}~__auto_ptr(){delete _M_ptr;}_Tp& operator*()const{ return *_M_ptr; }_Tp* operator->()const{ return _M_ptr; }_Tp* get()const{ return _M_ptr; }_Tp* release(){_Tp* __tmp = _M_ptr;_M_ptr = 0;return __tmp;}void reset(_Tp* __p = 0){delete _M_ptr;_M_ptr = __p;}private:template<class _Tp1>struct auto_ptr_ref{_Tp1* _M_ptr;auto_ptr_ref(_Tp1* __p) :_M_ptr(__p){}};public:__auto_ptr(auto_ptr_ref<_Tp> __ref) :_M_ptr(__ref._M_ptr){}template<class _Tp1>operator auto_ptr_ref<_Tp1>(){return auto_ptr_ref<_Tp>(this->release());}template<class _Tp1>operator __auto_ptr<_Tp1>(){return __auto_ptr<_Tp1>(this->release());}};#endif
0 0
- STL之智能指针
- STL之智能指针
- STL之auto_ptr智能指针
- stl智能指针auto_ptr
- STL--智能指针(auto_ptr)
- STL 智能指针
- stl智能指针auto_ptr
- auto_ptr STL智能指针
- 【STL】智能指针auto_ptr
- 智能指针(STL)
- [STL] STL不支持智能指针
- 内存管理之智能指针一:stl中的auto_ptr智能指针
- 智能指针与STL容器
- c++ stl auto_ptr智能指针
- C++ STL 智能指针(二)
- stl智能指针和boost智能指针对比
- C++之智能指针
- 智能指针之auto_ptr
- Trade.vcxproj 文件
- ios 短信分享没有标题和取消按钮问题
- 刷新tableview上指定的section或cell
- Apache Spark 1.6发布(新特性介绍)
- SSM整合
- STL之智能指针
- std::pair
- Android service
- GPUImage使用
- MAC 查看本机保存的各个密码
- android技术
- <一> 第一个qt+sqlite3程序
- Idea 远程运行Spark程序及 javax.servlet.FilterRegistration 错误解决方法
- 如何测试硬件的稳定性和兼容性