????????

????C++?ж?????????????????е?????????????.???????????????????????????????????ü????????->?????????????????????

??????????->??????????????????ü?????????????????????????

????????->??????

????????????????????????????????????????β?(????????????????β???this)??->??????????????????????????????????????????????????????????????

???????????????????????????????????????????????????????????????????????

?????????????????????????ü??????????????????????????????????ò??????????????????????????????????ж?????????????????????????????

???????????????????????????????????????????????????????????ò???????????????鷵??????????????????г???????????У???????????????????????????????????????????????????????????????????????????????????????????Щ?????????????????£?????????

???????????

??????????????????????

#include <iostream>
 
 using namespace std;
 
 class A{
 public:
     void action()
     {
         cout<<"action in class A!"<<endl;
     }
 };
 
 class B{
         //A a; 
 public:
     A a;
     A* operator->(){ 
         return &a; 
     } 
     void action(){ 
         cout << "Action in class B!" << endl; 
     }
 };
 
 class C{
         B b; 
 public: 
     B operator->(){ 
         return b; 
     } 
     void action(){ 
         cout << "Action in class C!" << endl; 
     }
 };
 
 int main() 
 { 
     C* pc = new C; 
     pc->action(); 
     C c; 
     c->action();  
     return 0; 
 }

????????????????????

????Action in class C!
????Action in class A!

???????????

C* pc = new C;
pc->action();

??????????????Action in class C!

???????????pc????????????????????????????????ú??壬??pc??????????????????????action??

???????????

C c;
c->action();

???????????????

????c?????c?????????????????????????????????????????C??operator->()?????????????????????B??????????????B??operator->()?????????B??operator->()???????????????????????????ü?????????????B??operator->()??????????н???????????y????ú????????????action??????????????A??action()??????????????????operator->()???????????????????ú??????????????