首页 > 其他 > 详细

auto_ptr和shared_ptr

时间:2015-06-03 17:33:29      阅读:162      评论:0      收藏:0      [点我收藏+]

  《Effective C++》在资源管理一节提到了智能指针,智能指针中最著名的当属auto_ptr和shared_ptr。本文主要研究两者的实现。

auto_ptr的实现:

template<class T>
class auto_ptr
{
private:
    T *ap;
public:
    explicit auto_ptr(T *ptr = 0):ap(ptr){}
    ~auto_ptr(){delete ap;}
    auto_ptr(auto_ptr &rhs):ap(rhs.release()){}
    auto_ptr& operator=(auto_ptr &rhs)
    {
        reset(rhs.release());
        return *this;
    }
    T* operator*() const {return *ap;}
    T* operator->() const {return ap;}
    T* get() const {return ap;}
    T* release()
    {
        T *tmp = ap;
        ap = 0;
        return tmp;
    }
    void reset(T *ptr = 0)
    {
        if (ptr != ap)
        {
            delete ap;
            ap = ptr;
        }
    }
};

参考资料:http://www.kafka0102.com/2010/02/62.html

auto_ptr的缺点:

  1. 复制或赋值行为不正常,因此不能置于容器中。

  2. 不能用于管理动态分配的数组。

auto_ptr和shared_ptr

原文:http://www.cnblogs.com/gattaca/p/4549528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!