您的位置:首页 > 其它

请简述智能指针原理,并实现一个简单的智能指针。

2016-08-10 18:20 435 查看
关于智能指针,因为C++prime上面讲的比较清楚,这里只简单说下:

智能指针是一种资源管理类,通过对原始指针进行封装,在资源管理对象进行析构时对指针指向的内存进行释放;通常使用引用计数方式进行管理,一个基本实现如下:

class Object;
class SmartPointer;

class Counter
{
friend class SmartPointer;
public:
Counter()
{
ptr = NULL;
cnt = 0;
}
Counter(Object* p)
{
ptr = p;
cnt = 1;
}
~Counter()
{
delete ptr;
}
private:
Object* ptr;
int cnt;
};

class SmartPointer
{
public:
SmartPointer(Object* p)
{
ptr_counter = new Counter(p);
}
SmartPointer(const SmartPointer &sp)
{
ptr_counter = sp.ptr_counter;
++ptr_count->cnt;
}
SmartPointer& operator=(const SmartPointer &sp)
{
++sp.ptr_counter->cnt;
--ptr_counter->cnt;
if (ptr_counter->cnt == 0)
{
delete ptr_counter;
}
ptr_counter = sp.ptr_counter;
}
~SmartPointer()
{
- -ptr_counter->cnt;
if (ptr_counter->cnt == 0)
{
delete ptr_counter;
}
}
private:
Counter* ptr_counter;

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: