标签:智能指针、c++
//智能指针可以自动销毁,用引用计数技术实现 #include<iostream> using namespace std; template<class T> class SmartPtr { protected: T* _ptr; size_t* _cout; void clear() { if(-- *_cout == 0) { delete _ptr; delete _cout; } } public: SmartPtr( T* ptr = 0) :_ptr( ptr) ,_cout( new size_t (1)) {} SmartPtr( const SmartPtr& p) :_ptr( p._ptr) ,_cout( p._cout) { ++ *_cout; } SmartPtr& operator=(const SmartPtr& p) { ++ * p._cout; clear(); _ptr = p._ptr; _cout = p._cout; return *this ; } ~SmartPtr() { clear(); } T* operator->() { if(_ptr) { return _ptr; } } T& operator*() { if(_ptr) { return *_ptr; } } const T* operator->()const { if(_ptr) { return _ptr; } } const T& operator*()const { if(_ptr) { return *_ptr; } } };
标签:智能指针、c++
原文地址:http://green906.blog.51cto.com/10697569/1758892