https://stackoverflow.com/questions/8777845/overloading-member-access-operators-c
struct client
{ int a; };
struct proxy {
client *target;
client *operator->() const
{ return target; }
};
struct proxy2 {
proxy *target;
proxy &operator->() const
{ return * target; }
};
void f() {
client x = { 3 };
proxy y = { & x };
proxy2 z = { & y };
std
并非如普通操作符一样在class内部定义一个函数做重载,而是通过一个代理类.