您的位置:首页 > 其它

一个实现智能指针的例子《还不完善》

2017-01-05 20:31 351 查看
#ifndef COUNTED_PTR_HPP
#define COUNTED_PTR_HPP

templete <class T>
class CountedPtr{
private:
T * ptr;
long * count;

public:
explicit CountedPtr (T * p = 0)
:ptr(p) , count(new long(1)){
}
CountedPtr (const CountedPtr<T> & p) throw()
: ptr(p.ptr) , count(p.count){
++*count;
}
~CountedPtr() throw() {
dispose();
}
CountedPtr<T> & operator= (const CountedPtr<T>& p) throw (){
if (this != &p){
dispose();
ptr = p.ptr;
count = p.count;
++*count;
}
return *this;
}

T & operator*() const throw(){
return *ptr;
}
T* operator->() const throw(){
return ptr;
}
private:
void dispose(){
if (--*count ==0){
delete count;
delete ptr;
}
}
}
#endif  /*COUNTED_PTR_HPP*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息