【转】浅析auto_ptr(12)

时间: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()

【转】浅析auto_ptr(12).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219