关于C++迭代器->操作符的问题


tempate<class T>
 
class shared_ptr
{
public:
    ......

    T* operator->()const{
        return px;
    }
    

    ''''''
    shared_ptr(T* p):px(p) {}
 
private:
    T* px;
    long* pn;

}
 
//......


//迭代器->重载
reference operator ->()
{
 
    return(&(operator*())) 
}



//......

如图,上面智能指针中的->直接使用了px作为返回值,为什么迭代器中重载->要先解引用再取地址?

。。。