tempate<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)//在这里使用new 生成天然指针,调用构造函数,转为为智能指针,sp
Foo f(*sp); //调用operator*()
sp->method(); //相当于调用px->method(); //同时->运算符具有延续性
区别于迭代器中的智能指针
//比如说是双向列表 node表示迭代器
recefermer operator*()
{
return *node->data;
}
recefermer operator*()
{
return(&(operator*()))
}