template<class T>
class shared_ptr
{
public:
T& operator*() const
{ return *px; }
T* operator->() const
{ return px; }
shared_ptr(T* p): px(p) {}
private:
T * px;
long* pn;
}
struct Foo
{
void method(void);
}
shared_ptr<Foo> sp(new Foo)
Foo f(*sp)
sp->method();---->px->method();
pointer-like classes 开放迭代器
template<class T,class Ref, class Ptr>
struct _list_iterator{
typedef _list
}
T & operator *() const{
return (*node).data;
}
T* operator->() const{
return &(operator*());
}