auto_ptr見てたら演算子のオーバーロードがよくわからなくなってきました。

struct st
{
int Int;
};
class test
{
st Data;
public:
st *operator->() { return &Data; };
st *Get() { return &Data; };
};

test obj;
int i = obj->Int;
 これが出来るなら
int i = obj.Get()Int;
 これも出来そうな気がしたけど出来ない。
そもそも->演算子ってどんなものなんでしょうか?