【转】浅析auto_ptr(12)
时间:2025-07-14
时间:2025-07-14
智能指针,auto_prt的基本用法,及其示例
它被包含在std空间内。
//这个模板结构是为了让auto_ptr成为函数返回值
template<typename _Tp1>
struct auto_ptr_ref
{
_Tp1* _M_ptr;
explicit
auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
};
template<typename _Tp>
class auto_ptr
{
private:
_Tp* _M_ptr;//真正存储的数据,一个指针型
public:
typedef _Tp element_type;//数据类型
//这种构造直接将指针赋值给_M_ptr
explicit
auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }
//拷贝构造函数,会先将参数__a作废,然后使对象捕获__a原本指向的目标 auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { }
//带模板的转化函数,同上。
template<typename _Tp1>
auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { }
//这个=号赋值也会使__a作废,原因在此,注意。
auto_ptr&
operator=(auto_ptr& __a) throw()
{
reset(__a.release());
return *this;
}
//模板例程 ,效果同上。
template<typename _Tp1>
auto_ptr&
operator=(auto_ptr<_Tp1>& __a) throw()
上一篇:预分解窑操作的体会(二)