智能指针3---SharedPtr

来源:互联网 发布:mac如何强行关机 编辑:程序博客网 时间:2024/06/06 06:42

SharedPtr:

1.利用引用计数来解决拷贝构造和赋值运算符重载的问题。



#pragma oncetemplate<class T>class SharedPtr{public:SharedPtr():_ptr(NULL), _pCount(0){}SharedPtr(T* ptr):_ptr(ptr),_pCount(new int(1)){}~SharedPtr(){/*if (--_pCount==0){delete _ptr;delete _pCount;}*/_Release();}SharedPtr(const SharedPtr<T>& sp)//拷贝构造:_ptr(sp._ptr),_pCount(sp._pCount){++(*_pCount);}SharedPtr& operator=(const SharedPtr<T> sp){if (this != &sp){this->_Release();this->_ptr = sp._ptr;++(*_pCount);}return *this;}protected:void _Release(){if (--(*_pCount) == 0){delete _ptr;delete _pCount;}}protected:T* _ptr;int* _pCount;};void  TestSharedPtr(){SharedPtr<int> sp1(new int(1));SharedPtr<int> sp2(sp1);}


1 0