23 Ref(T* p) : ptr(p), count(1) {}
25 Ref* increment() {++count;
return this;}
26 bool decrement() {
return (--count==0);}
29 Ref& operator=(
const Ref&);
34 : ref(p ?
new Ref(p) : 0)
38 : ref(other.ref ? other.ref->increment() : 0)
43 if (ref && ref->decrement())
48 Ref* tmp = other.ref ? other.ref->increment() : 0;
49 if (ref && ref->decrement())
57 return ref ? ref->ptr : 0;
62 return ref ? ref->ptr : 0;
67 return ref ? ref->ptr : 0;