码迷,mamicode.com
首页 > 其他好文 > 详细

智能指针(使用计数)

时间:2015-04-13 09:41:23      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:智能指针   使用计数   primier   

STL智能指针使用方法

auto_ptr<int> pi(new int(1024));

定义智能指针类(使用计数)

技术分享

实现代码:

class RealPtr {
    friend class AutoPtr;
    int *ip;
    size_t use;
    RealPtr(int *p) : ip(p), use(1) {}
    ~RealPtr() { delete ip; }
};

class AutoPtr{
public:
    AutoPtr(int *p): ptr(new RealPtr(p)) { }

    AutoPtr(const AutoPtr &orig) : ptr(orig.ptr) { ++ptr->use; }

    AutoPtr& operator=(const AutoPtr& rhs) {
        ++rhs.ptr->use;
        if (--ptr->use == 0) delete ptr;
        ptr = rhs.ptr;
        return *this;
    }

    ~AutoPtr() { if (--ptr->use == 0) delete ptr; }

    int *get_ptr() const { return ptr->ip; }
    void set_ptr(int *p) const { ptr->ip = p; }

    int get_ptr_val() const { return *ptr->ip; }
    void set_ptr_val(int i) { *ptr->ip = i; }

private:
    RealPtr *ptr;
};

智能指针(使用计数)

标签:智能指针   使用计数   primier   

原文地址:http://blog.csdn.net/u014539401/article/details/45013279

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!