编程交流与学习--More Effective C++的学习-Item M28:灵巧(smart)指针

Item M28:灵巧(smart)指针

Stl源代码如下:

template<class _Ty>

class auto_ptr {

public:

typedef _Ty element_type;

explicit auto_ptr(_Ty *_P = 0) _THROW0()

    : _Owns(_P != 0), _Ptr(_P) {}

auto_ptr(const auto_ptr<_Ty>& _Y) _THROW0()

    : _Owns(_Y._Owns), _Ptr(_Y.release()) {}

auto_ptr<_Ty>& operator=(const auto_ptr<_Ty>& _Y) _THROW0()

    {if (this != &_Y)

        {if (_Ptr != _Y.get())

            {if (_Owns)

                delete _Ptr;

            _Owns = _Y._Owns; }

        else if (_Y._Owns)

            _Owns = true;

        _Ptr = _Y.release(); }

    return (*this); }

~auto_ptr()

    {if (_Owns)

        delete _Ptr; }

_Ty& operator*() const _THROW0()

    {return (*get()); }

_Ty *operator->() const _THROW0()

    {return (get()); }

_Ty *get() const _THROW0()

    {return (_Ptr); }

_Ty *release() const _THROW0()

    {((auto_ptr<_Ty> *)this)->_Owns = false;

    return (_Ptr); }

private:

bool _Owns;

_Ty *_Ptr;

};

原文太长,懒得看了。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值